将DataTable导出到Excel文件的最佳方法是什么?

据我所知,有3种方法可以做到这一点:

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

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

非常感谢。

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

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

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

这种方法有很多古怪的东西(主要是引用表和范围),但最终只是一个ADO.NET实现,最终看起来非常像一个普通的ADO.NET项目。

希望这可以帮助!

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

我的替代scheme是使用Codeplex上的许多项目之一导出到xslx。 我玩过ExcelPackage和简单的OOXML ,这两个(IIRC)工作正常。

您可以通过在Codeplex上searchExcel或OOXMLfind更多信息。

警惕写入CSV,因为Excel会自动转换数据types。 例如,0001将被转换为数字1。

另一个select是使用DataTable.WriteXML(文件名)并将文件名设置为something.xls

这不是二进制的XLS文件,但也应该打开Excel。

顺便说一下:如果你需要格式化的话,HTML表格的方法会更好,而且这两种方法对于大型表格来说都会很慢。