111,094
社区成员




public void myDataGridViewToExcel(DataGridView dgv)//从DataGridView导出到excel
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl文件 (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
//为true时每次都是从软件目录开始选择
saveFileDialog.Title = "导出到";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
Stream myStream;
myStream = saveFileDialog.OpenFile();
//应该不会是编码的问题,全部我都试过了
StreamWriter sw = new StreamWriter(myStream, UnicodeEncoding.Default);
//StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
string str = "";
try
{
//这个循环写标题
for (int i = 0; i < dgv.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
}
str += dgv.Columns[i].HeaderText;
}
sw.WriteLine(str);
string tempStr = "";
for (int j = 0; j < dgv.Rows.Count - 1; j++)
{
//string tempStr = "";
for (int k = 0; k < dgv.Columns.Count; k++)
{
//这里首先把整行读出来再写进去
if (dgv.Rows[j].Cells[k].Value.ToString() == "")//判断是否为空
{
tempStr += " ";
}
else
{
tempStr = dgv.Rows[j].Cells[k].Value.ToString();
}
sw.Write(tempStr);
sw.Write("\t");
tempStr = "";
}
sw.WriteLine();
}
MessageBox.Show("数据导出成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
}