我正在使用 C# 中的 Excel Interop 并编写代码来对包含数万行数据的表格进行一些复杂的操作。它的运行速度往往很慢。
我经常将数据存储在某种变量中,在最终将结果写入工作表之前,我会对这些变量执行一些中间计算。
我确信这不是一个好方法,但我经常发现自己构建了一个临时工作表,当我的代码执行完毕后该工作表将被删除,这样我就可以对数据使用 Range 属性的 Excel 方法,而不是尝试在数组中实现类似的方法。最常见的是,这涉及按多列排序、删除重复项等。这些列几乎总是有许多不同类型的数据(字符串、整数、带两位小数的数字——尽管存储在这些单元格中的实际数据类型并不似乎总是很简单(例如 100000000.01 有时似乎是 double 类型,有时是十进制)。处理所有不同数据类型的最简单方法似乎只是使用 Excel 范围,这就是为什么我的代码经常创建临时工作表,然后在我的代码中删除它们。
处理这类情况的正确、有效的方法是什么?
最佳答案
看看这些链接
- http://www.clear-lines.com/blog/post/Write-data-to-an-Excel-worksheet-with-C-fast.aspx
- Excel Interop - Efficiency and performance
- http://xldennis.wordpress.com/2012/01/30/best-practices-export-data-to-excel/
如果您正在更新单个单元格,那将非常缓慢。但总的来说,excel interop 很慢。您是否考虑过创建一个 CSV 文件,然后使用 excel 互操作来转换最终结果?
关于c# - 在 C# 中处理大型 Excel 范围的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25124496/