将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表格的方法会更好,而且这两种方法对于大型表格来说都会很慢。