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

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

有5种不同types的细胞可以通过查找每个特定的string模式来识别。

我希望这5个桶中的每一个都有不同的内部颜色。 而且每个细胞types的范围都不是连续的。

这是我所尝试过的,它的工作原理,但是很痛苦。

将使用的范围转储到variables数组,循环遍历数组,标识每个单元桶types,并根据它所属的桶的types为每个单元格设置一次内部颜色索引。

将使用的范围转储到variables数组,循环遍历数组,标识每个单元桶types并使用联合创build一个新的范围,每种types的范围只设置一次内部颜色索引。

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

任何其他方式来优化这个?

每一次Interop从外面打电话给Excel都很慢。 所以你可以通过一次调用获得一个variables范围来获得大范围的值。 但是我不知道如何获取或设置格式。 我的想法是:

  • 从内部进行呼叫:使用VBA
  • 以Excel 2003 XML格式导出工作簿,修改XML中的格式(好吧,这有点复杂)并在Excel中重新加载
  • 按照您提到的build立联盟,但不要将单个单元格添加到该联盟,而是通过构build子范围( Range("A1,A2,A3,A4,A5.....") )来捆绑呼叫。 不幸的是,你必须认为这些单个string不会超过255个字符。
  • 有条件的格式可能?