在C#中使用大型Excel范围的最有效的方法?

我正在C#中使用Excel Interop,并且正在编写代码来对具有数万行数据的表进行一些复杂的操作。 它趋于运行非常缓慢。

我经常将数据存储在某种variables中,在最终将结果写入工作表之前,我会执行一些中间计算。

我相信这不是一个好方法,但是我经常发现自己构build了一个临时工作表,当我的代码完成执行时,这个临时工作表会被删除,这样我就可以在数据上使用Range属性的Excel方法,而不是试图实现类似方法在一个数组中。 大多数情况下,这涉及到多列sorting,删除重复项等等。这些列几乎总是有许多不同types的数据(string,整数,数字有两位小数 – 尽pipe存储在这些单元格中的实际数据types不似乎总是很直接(例如100000000.01似乎有时是双精度型,其他时间是十进制)处理所有不同的数据types的最简单的方法似乎只是使用Excel范围,这就是为什么我的代码经常创build临时工作表,然后在我的代码中删除它们。

处理这些情况的适当和有效的方法是什么?

看看这些链接

  1. http://www.clear-lines.com/blog/post/Write-data-to-an-Excel-worksheet-with-C-fast.aspx
  2. Excel Interop – 效率和性能
  3. http://xldennis.wordpress.com/2012/01/30/best-practices-export-data-to-excel/

如果你正在更新将会非常慢的单个单元格。 但总的来说,excel互操作性很慢。 你有没有考虑过可能创build一个CSV文件,然后使用Excel互操作来转换最终结果?