2010-07-14 94 views
0

据我所知,是3种方式来做到这一点:将DataTable导出到Excel文件的最佳方式是什么?

  • 第一种方式是使用COM互操作创建一个Excel文件,然后遍历所有的细胞来读取和写入数据。创建的文件似乎是有效的(真正的.XLS文件),但似乎Excel必须安装使用这种方式
  • 第二种方法是编写文件头(CSS样式),然后遍历所有单元格。这种方式不需要安装Excel,但创建的文件可能无效(实际上是HTML文件)
  • 第三种方法是将DataTable填充到DataGrid中,然后将其渲染为HTML文件,然后重命名它转换成.xls扩展名。

第三种方法似乎是最简单的,但我不知道是否有更好的方法来存档这个?如果不是,哪三种方式最好?

非常感谢。

回答

1

第四种方法是使用OleDbConnection并使用标准ADO.NET将.NET应用程序连接到Excel。

几年前我不得不做类似的事情,这篇文章非常有帮助。

http://davidhayden.com/blog/dave/archive/2006/05/26/2973.aspx

有很多离奇的事情这种做法(主要是参照表和范围),但它最终被只是一个ADO.NET实施和最终看起来非常像一个正常的ADO.NET项目。

希望这会有所帮助!

1

最简单的方法:CSV。只需将每个DataRow的每个值的ToString()拖放到文件中即可。您也可以删除列名作为文件中的第一行。 CSV文件很容易导入到excel中。

我的替代方案是使用Codeplex上的许多项目之一导出到xslx。我已经玩过ExcelPackageSimple OOXML,这两种都很好(IIRC)。

通过在Codeplex上搜索Excel或OOXML可以找到更多信息。

+0

另一个Codeplex项目值得一提:[ClosedXML](https://closedxml.codeplex.com/),它允许直接将DataTable对象保存到'.xlsx'文件中。虽然不支持旧的'.xls'格式。 – Isxek 2014-02-01 04:23:02

0

由于Excel会自动转换数据类型,因此请谨慎写入CSV。例如0001将被转换为数值1

另一种选择是使用DataTable.WriteXML(filename)并设置文件名something.xls

这不是二进制XLS文件,但应与Excel中打开一样好。

顺便说一句:如果您需要格式化,HTML表格方法会更好,并且这两种方法对于大型表格可能会非常慢。

相关问题