使用C#优化大型Excel电子表格中的单元格颜色设置



我有一个非常大的excel电子表格,大小约为200 MB,有12列和100万行。

有5种不同类型的细胞可以通过在每种细胞中寻找特定的字符串模式来识别。

我希望这5桶细胞中的每一桶都有不同的内部颜色。此外,每种单元格类型的范围都不是连续的。

这是我尝试过的,它很有效,但速度很慢。

将使用过的范围转储到一个变量数组中,在数组中循环,识别每个单元格桶类型,并根据其所属的桶类型为每个单元格设置一次内部颜色索引。

将使用过的范围转储到一个变量数组中,在数组中循环,识别每个单元格桶类型,并使用并集创建一个新的范围,每个类型的范围只设置一次内部颜色索引。

这两种方法都需要大约90分钟才能使细胞着色。

还有其他优化方法吗?

从外部对Excel的每一次Interop调用都非常缓慢。因此,通过一次调用获取一个变量范围,可以非常快地获取大范围的值。但我对获取或设置格式一无所知。我的想法是:

  • 从内部执行调用:使用VBA
  • 以Excel 2003 XML格式导出工作簿,以XML格式修改格式(好吧,有点复杂),然后在Excel中重新加载
  • 正如您提到的那样构建并集,但不要向该并集添加单个单元格,而是通过构建子范围(Range("A1,A2,A3,A4,A5....."))来绑定调用。不幸的是,您必须注意,这些单个字符串的长度不会超过255个字符
  • 是否可以设置条件格式

最新更新