其实你导出的文件,其实是一个标准的文本文件(相当于 CSV 文件),根本就不是 EXCEL 文档。你只不过把扩展名改成了" />
乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > C#以流方式把DataGridView数据<em>导出Excel</em>!-导出excel 2

C#以流方式把DataGridView数据<em>导出Excel</em>!-导出excel 2

作者:乔山办公网日期:

返回目录:excel表格制作




其实你导出的文件,其实是一个标准的文本文件(相当于 CSV 文件),根本就不是 EXCEL 文档。你只不过把扩展名改成了 *.xls 冒充 EXCEL 文件而已,本质上就是文本文件,用记事本打开的那种!

在 Excel 2003 比较宽宏大量,允许你这种龌龊的冒充行为而已(呵呵),所以在 2003 中你能打开,到了 2007 后不在允许赤裸裸的、龌龊冒充行为(哈哈),所以你的“导出”立即穿帮了。。。。

解决办法:
微软在 Office 2007 版本开始使用 OpenXML 格式了。何为 OpenXML ?其实就是一种开放标准的 XML 文件,你导出 Excel 2007 文件,只要遵守 OpenXML 格式写入文本就可以了。
另外:OpenXML 还涉及到 ZIP 压缩,幸好 .NET 自带 ZIP 压缩类,你可以上网搜一下e799bee5baa6e4b893e5b19e338代码,很多。

OpenXML 文件格式参考文档:
http://www.360doc.com/content/11/0324/14/1244775_104184482.shtml


SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|e799bee5baa6e78988e69d83332*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出Excel文件到";

DateTime now = DateTime.Now;
saveFileDialog.FileName = now.Year.ToString().PadLeft(2) + now.Month.ToString().PadLeft(2, '0') + now.Day.ToString().PadLeft(2, '0') + "-" +
now.Hour.ToString().PadLeft(2, '0') + now.Minute.ToString().PadLeft(2, '0') + now.Second.ToString().PadLeft(2, '0');

if (saveFileDialog.ShowDialog() == DialogResult.Cancel)
return;

Stream myStream;
myStream = saveFileDialog.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
try
{

sw.WriteLine(sWriteTotal);
sw.Close();
myStream.Close();
MessageBox.Show("导出成功");
}
catch (Exception ex)
{

MessageBox.Show(ex.ToString());
}
finally
{
sw.Close();
myStream.Close();
}

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网