c# - 在 C# 中处理大型 Excel 范围的最有效方法?

标签 c# excel excel-interop

我正在使用 C# 中的 Excel Interop 并编写代码来对包含数万行数据的表格进行一些复杂的操作。它的运行速度往往很慢。

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

我确信这不是一个好方法,但我经常发现自己构建了一个临时工作表,当我的代码执行完毕后该工作表将被删除,这样我就可以对数据使用 Range 属性的 Excel 方法,而不是尝试在数组中实现类似的方法。最常见的是,这涉及按多列排序、删除重复项等。这些列几乎总是有许多不同类型的数据(字符串、整数、带两位小数的数字——尽管存储在这些单元格中的实际数据类型并不似乎总是很简单(例如 100000000.01 有时似乎是 double 类型,有时是十进制)。处理所有不同数据类型的最简单方法似乎只是使用 Excel 范围,这就是为什么我的代码经常创建临时工作表,然后在我的代码中删除它们。

处理这类情况的正确、有效的方法是什么?

最佳答案

看看这些链接

  1. http://www.clear-lines.com/blog/post/Write-data-to-an-Excel-worksheet-with-C-fast.aspx
  2. Excel Interop - Efficiency and performance
  3. 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/

相关文章:

c# - 异步读取 Excel 工作表

c# - 我如何将其写成单个 LINQ 查询?

c# - Asp.Net Core 2.0.1 的 Serilog 设置不生成日志

c# - JScript.NET 与 ECMA

vba - 隐藏行宏需要很长时间才能运行

c# - 将 xlsx 转换为 xls 问题

c# - NHibernate 映射 : Save hierarchy to single table without discriminator

excel - 为变体数组设计的 VB.NET Option Explicit 和 Office VSTO 方法

sql - 将带有换行符的 SQL 查询输出粘贴到单个 Excel 单元格中

C# Interop.Excel '#N/A' 单元格值转换为 -2146826246