通过IO流的方式进行导出
- 在winform界面拖一个提交按钮,单击按钮,进入按钮 按钮的内容如下:
`private void ExportExcel_Click(object sender, EventArgs e)
{
DataGridView myDGV = dataGridView1;:
string path = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel97-2003 (*.xls)|*.xls|All Files (*.*)|*.*";
saveDialog.ShowDialog();
path = saveDialog.FileName;
if (path.IndexOf(":") < 0) return;
try
{
Thread.Sleep(1000);
StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("gb2312"));
StringBuilder sb = new StringBuilder();
for (int k = 0; k < myDGV.Columns.Count; k++)
{
if (myDGV.Columns[k].Visible)
{
sb.Append(myDGV.Columns[k].HeaderText.ToString().Trim() + "\t");
}
}
sb.Append(Environment.NewLine);
for (int i = 0; i <= myDGV.Rows.Count - 1; i++)
{
System.Windows.Forms.Application.DoEvents();
for (int j = 0; j < myDGV.Columns.Count; j++)
{
if (myDGV.Columns[j].Visible)
{
if (j == 2)
{
sb.Append("'" + myDGV.Rows[i].Cells[j].Value + "\t");
}
else
{
sb.Append(myDGV.Rows[i].Cells[j].Value + "\t");
}
}
}
sb.Append(Environment.NewLine);
}
sw.Write(sb.ToString());
sw.Flush();
sw.Close();
MessageBox.Show(path + ",导出成功", "系统提示", MessageBoxButtons.OK);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
- 注意事项:
2.1 当dataGridView中的列不完全在datatable中的时候,导出到excel中的时候,空的字段会显示在前面
2.2 当导出日期时,正常处理会乱码,需要加 " ’ " 。如图所示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e8549074c7ad47b188c89cc9405acedc.png)
2.3 需要使用引用
using System.IO;
using System.Threading;