我正在尝试使用OLEDB写入excel文件(没有自动化)。 我从其他应用程序获得了大约500行数据,然后使用“INSERT INTO ..”查询逐个写入Excel文件。 我确信从其他应用程序读取数据没有延迟。我查了一下。 在大约3分钟内写入500行的excel文件所花费的总时间。 这太多了。这肯定是因为文件写入操作。
最快的方法是什么? 我应该使用其他一些技巧写作吗? 我应该尝试一种自动化技术吗?
http://support.microsoft.com/kb/306023 此链接显示了许多技术,但不确定使用哪种技术。
答案 0 :(得分:7)
如果您可以将COM转换为Excel,则可以通过COM直接从excel查询,或创建数据数组并将其直接放入等于数组大小的范围内。尽管excel对于小型COM调用并不好用,但它很少用于大量的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的示例
答案 1 :(得分:3)
Excel已经提供了以XML格式读取/写入数据所需的一切。
我偶尔使用SpreadsheetML格式,对我来说效果很好。使用它,您可以写出一个xml格式的文档,并使用.xls扩展名命名。大多数excel功能都可用。 Microsoft的参考文档为here。 Google提供各种语言的教程,例如Rails,PHP。这本书Excel Hacks也谈到了它。
答案 2 :(得分:2)
如果只是数据,则可以使用CSV文件导入。在代码中创建文件并使用自动化使Excel导入文件。
更新:写完这篇文章后,我喜欢@MicTech's suggestion,我不知道。
答案 3 :(得分:2)
我们使用SpreadsheetGear。
答案 4 :(得分:1)
我推荐FlexCel库,但它不是免费的:(
但是如果您想要Office Open XML格式,可以使用http://excelpackage.codeplex.com/
答案 5 :(得分:1)
您是在寻找一次性转储到Excel还是保持连接并多次将数据推送到Excel?
如果您想要多次将数据推送到Excel,您应该调查制作RTD服务器,我已多次使用它们并且它们可以正常工作RTD Server
如果您正在寻找一次性推送到Excel,则需要使用COM。 Using COM and C#
C#版本4对托管COM进行了一些很好的改进,在使用Excel时不再需要主互操作程序集。 C#4尚未投入生产,但如果它适合您,您可以下载它的测试版。
答案 6 :(得分:0)
嗯,最基本(也是最复杂)的Excel编写方式是按照BIFF格式创建二进制文件。使用BIFF格式,您需要概述Excel文件的结构。它非常复杂,但您可以基于每个单元控制写入内容。
将DataSet导出到Excel文件中还有其他CodeProject示例。请记住,创建一个遵循Excel XML格式的XML文件。它还基于每个单元写入。看看:
http://www.codeproject.com/KB/office/ExportDataSetToExcel.aspx
答案 7 :(得分:0)
“写入”Excel的另一种方法是将数据创建为HTML页面并加载它。 Excel实际上可以读取HTML。通过html执行此操作的一个好处是,您可以使用CSV格式化数据格式。
但是,如果您只是导出简单数据(小文本字段和数字),请使用CSV。
答案 8 :(得分:0)
我一直在使用Aspose.Cells库非常成功地编写Excel文件。但它远非便宜。
答案 9 :(得分:0)
这个库是免费的,并且非常快速地创建xls文件,如果你没有安装MS Office,它也可以工作。 http://code.google.com/p/excellibrary/downloads/list
答案 10 :(得分:0)
我们使用aspose细胞。它非常易于使用,快速,没有明显的问题。
http://www.aspose.com/categories/.net-components/aspose.cells-for-.net/default.aspx
答案 11 :(得分:0)
快速而又脏的方法是创建一个包含表格数据的HTML表格,然后用.xls扩展名保存。它工作正常,将在Excel中打开。