将整个Excel范围的颜色设置为颜色数组

时间:2018-04-13 12:54:59

标签: c# excel vsto

我有一个包含10个单元格的Excel.Range,我希望通过使用基于0的2d数组和10个Excel.XlRgbColor元素来更改其颜色。

object[,] colorsTest = new object[10, 1]
    {
        { Excel.XlRgbColor.rgbAliceBlue, Excel.XlRgbColor.rgbAliceBlue},
        { Excel.XlRgbColor.rgbAliceBlue, Excel.XlRgbColor.rgbAliceBlue}...
        (8 more)
    };

Excel.Range range = activeSheet.Range[activeSheet.Cells[1, 1], activeSheet.Cells[10, 1]];

但是现在当我尝试设置

range.Interior.Color = colorsTest;

由于某种原因,我收到了一个Type mistmatch错误。当我尝试使用数组设置范围值时,一切都按预期工作 - 我将颜色的索引粘贴到单元格中作为值,如预期的那样。

知道可能导致这种情况的原因是什么?我认为类型应该是它应该是什么。

我必须应用大约5000行,因此分别循环它们会导致悲剧性能。

1 个答案:

答案 0 :(得分:0)

有趣的想法,但不幸的是,它不可能为你想要的范围内的每个细胞设置不同的颜色。我真的很惊讶你没有得到错误。

我也同意"悲惨的表现"我想我们在这里谈论会议纪要。 我在这里看到几个选项

  • 复制格式 - 如果颜色稳定,您将始终应用相同或仅几种变体。我在某处准备了彩色单元格,比如在AA1:AA10范围内,当你想要应用颜色时,我只需要复制& amp;粘贴格式到您的范围
  • OpenXML - 我相信它会比逐个访问单元格更快,但我假设您将至少编码一天。我没有太多使用OpenXML SDK的经验,但从我的工作中我可以告诉你它非常详细