我有一大堆DataTables要导出到几个Excel工作表中(在新的电子表格/ Excel文件中)。我所拥有的代码中已存在的“解决方案”是两个嵌套的for
循环,遍历所有行和列,逐个单元地插入数据。这并不理想,因为这个过程需要10多分钟。由于生成的电子表格为8.5MB,因此数据量相当大,但肯定有更快的方法吗?
我正在使用Office Interop库来执行此操作;我想我记得在哪里可以用这些来导入CSV。如果是这种情况,是否可以更快地将DataTables转换为CSV然后将其导入Excel,如果是,那么如何?
答案 0 :(得分:2)
您最好的选择可能是通过使用Range对象上的Value属性设置器来加快速度。它接受一个数组,它比单独设置每个单元格要快得多。您可以在http://support.microsoft.com/kb/302096找到相关示例。
答案 1 :(得分:0)
SpreadsheetGear for .NET有一个类似于Excel的API,但会将你的时间从10分钟缩短到几秒钟(实际上,生成一个8.5MB的工作簿通常需要在现代服务器上<1秒)。 SpreadsheetGear还包含一个可能适合您的IRange.CopyFromDataTable方法。
您可以查看实时ASP.NET示例(C#和VB)here并下载评估here。
免责声明:我拥有SpreadsheetGear LLC