我正在尝试使用OLEDB (没有自动化)写入excel文件。我有大约500行数据,这些数据是我从其他应用程序中获得的,然后使用“INSERT into ..”逐个写入Excel文件。查询。我确信从其他应用程序读取数据时不会有任何延迟。我查过了。在大约3分钟内写入500行excel文件所用的总时间。这太过分了。这绝对是因为文件写入操作。
最快的方法是什么?我应该使用其他的写作技巧吗?我应该尝试自动化的技术吗?
http://support.microsoft.com/kb/306023此链接显示了许多技术,但不确定要使用哪种技术。
发布于 2009-05-15 22:47:57
如果可以进入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中的示例。
发布于 2009-05-15 22:36:23
XML已经提供了读/写数据所需的一切。
我有时会使用SpreadsheetML格式,它对我来说效果很好。使用它,您可以写出一个xml格式的文档,并使用.xls扩展名对其进行命名。大多数excel功能都是可用的。微软的参考文档是here。谷歌上有各种语言的教程,比如Rails,PHP。Excel Hacks这本书也谈到了这一点。
发布于 2009-05-15 22:37:25
如果只是数据,CSV文件导入可以正常工作。在代码中创建文件,并使用自动化使Excel导入该文件。
更新:写完这篇文章后,我喜欢上了我不知道的@MicTech's suggestion。
https://stackoverflow.com/questions/871115
复制相似问题