我正在尝试使用 OLEDB (没有自动化)写入 Excel 文件。
我有大约 500 行数据,这些数据是从其他应用程序获取的,然后使用“INSERT INTO..”查询将其一一写入 Excel 文件。
我确信从其他应用程序读取数据没有延迟。我查了一下。
大约 3 分钟内写入 500 行 Excel 文件所需的总时间。
这太多了。这肯定是由于文件写操作造成的。
加快速度的最佳方法是什么?
我应该使用其他写作技巧吗?
我应该尝试自动化技术吗?
http://support.microsoft.com/kb/306023 http://support.microsoft.com/kb/306023此链接显示了许多技术,但不确定使用哪一种。
如果可以 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 中的示例
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)