什么是使用C#写入Excel文件的最好和最快的方式?

我正在尝试写入使用OLEDB的Excel文件(没有自动化)。 我有大约500行的数据,我从其他应用程序获得,然后使用“INSERT INTO ..”查询逐个写入Excel文件。 我确信从另一个应用程序读取数据是没有延迟的。 我查了一下 在大约3分钟内写入500行的excel文件所需的总时间。 这太多了。 这绝对是因为文件写入操作。

什么是最快的方法? 我应该使用其他一些技巧来写作吗? 我应该尝试一种自动化技术吗?

http://support.microsoft.com/kb/306023此链接显示了许多技术,但不确定使用哪一个。

如果你可以把COM转换成excel,那么你可以通过COM直接从excel中查询,或者创build一个数据数组并直接把它放到一个等于你的数组大小的范围内。 即使excel对于小型COM调用来说也不是很好,但是对于很less的大型COM调用来说,它的效果相当好:)

DataSet ds = new DataSet(); da.Fill(ds); int width = ds.Tables[0].Columns.Count; int height = ds.Tables[0].Rows.Count; object[,] retList = new object[height, width]; for (int i = 0; i < height; i++) { DataRow r = ds.Tables[0].Rows[i]; for (int j = 0; j < width; j++) retList[i, j] = r.ItemArray[j]; } Excel.Range range = mWs.get_Range(destination, mWs.Cells[destination.Row + height - 1, destination.Column + width - 1]); range.set_Value(Missing.Value, retList); System.Runtime.InteropServices.Marshal.ReleaseComObject(range); range = null; 

这是获取数据并将其作为数组插入到一个COM调用中的示例

Excel已经提供了用XML读取/写入数据所需的一切。

我偶尔使用了SpreadsheetML格式,对我来说效果很好。 用它,你写出一个XML格式的文件,并用.xls扩展名来命名。 大多数的Excelfunction是可用的。 微软的参考文档在这里 。 Google提供各种语言的教程,例如Rails , PHP 。 Excel Hacks也谈到了这一点。

如果只是数据,则可以导入CSV文件导入。 在代码中创build文件并使用自动化使Excel导入文件。

更新:在写这篇文章之后,我喜欢@ MicTech的build议 ,我不知道。

我们使用SpreadsheetGear 。

我推荐FlexCel库,但它不是免费的:(

但是,如果您需要Office Open XML格式,则可以使用http://excelpackage.codeplex.com/

您是否正在寻找一次转储到Excel或保持连接,并不止一次地推送数据到Excel?

如果您不止一次地将数据推送到Excel,您应该调查制作一个RTD服务器,我已经使用了很多次,他们使用RTD服务器

如果您想要一次性推送到Excel,则需要使用COM。 使用COM和C#

C#版本4对托pipeCOM有一些很好的改进,在使用Excel时不再需要主互操作程序集。 C#4尚未投入生产,但如果它适合您,可以下载它的testing版。

另一种“写入”Excel的方法是将数据创build为HTML页面并加载。 Excel实际上可以读取HTML。 通过html做这件事的一个好处就是你可以用CSV格式化数据。

但是,也就是说,如果您只导出简单的数据(小文本字段和数字),请使用CSV。

那么写Excel的最基本的(也是最复杂的)方法是创build一个BIFF格式的二进制文件。 使用BIFF格式,您需要概述Excel文件的结构。 这是非常复杂的,但是你可以根据每个单元来控制写什么。

还有其他CodeProject示例将DataSet导出到Excel文件中。 考虑到这一点,将创build一个遵循Excel XML格式的XML文件。 它也写在每个单元的基础上。 看着:

http://www.codeproject.com/KB/office/ExportDataSetToExcel.aspx

我一直在使用Aspose.Cells库成功写入Excel文件。 虽然这样远不便宜。

这个库是免费的,很快创buildxls文件,它也可以工作,如果你没有安装MS Office。 http://code.google.com/p/excellibrary/downloads/list

我们使用aspose细胞。 这很容易使用,快速,没有明显的问题。

http://www.aspose.com/categories/.net-components/aspose.cells-for-.net/default.aspx

快速而肮脏的方法是创build一个包含表格数据的HTML表格,然后用.xls扩展名保存。 它的工作原理,将在Excel中打开罚款。