C# 适用于所有单元格的颜色

C# 适用于所有单元格的颜色,c#,spreadsheetgear,C#,Spreadsheetgear,我试图将颜色应用于电子表格Gear生成的电子表格中的某些单元格 我当前的代码 var workbook = Factory.GetWorkbook(); var worksheet = workbook.Worksheets["Sheet1"]; // Set the new worksheet name worksheet.Name = "Group export"; var cells = worksheet.

我试图将颜色应用于电子表格Gear生成的电子表格中的某些单元格

我当前的代码

        var workbook = Factory.GetWorkbook();
        var worksheet = workbook.Worksheets["Sheet1"];
        // Set the new worksheet name
        worksheet.Name = "Group export";

        var cells = worksheet.Cells;

        cells[0, 0].Style.Font.Size = 20;

        cells[5, 0].Value = "Default Values";
        cells["A6"].Style.Interior.Color = System.Drawing.Color.FromArgb(166,166,166); //Line 86
但是,当打开电子表格时,我发现字体大小和单元格颜色应用于电子表格中的每个单元格。“默认值”单元格仅在正确的单元格中,但我在工作表中应用的任何背景或字体样式都适用于所有单元格

我设置了一个监视单元格[“A6”].Style.Interior.Color和单元格[“A5”].Style.Interior.Color,并在第86行之后设置了一个断点,以确认这是进行样式设置的地方


为什么样式应用于电子表格中的所有单元格?

出于某种原因,访问样式部分会使其将样式应用于整个图纸,而不仅仅是范围。删除“样式”修复了该问题

而不是使用

cells["A6"].Style.Interior.Color = System.Drawing.Color.FromArgb(166,166,166);
使用


正确格式化单元格

问题在于您正在为单元格使用的样式(请参见IRange..和界面)设置
内部
定义,而不是直接为单元格本身(IRange.)设置内部。在样式级别设置任何特性时,它将影响使用相同样式的所有其他单元格

想想“正常”、“坏”、“好”等,可以从Excel的功能区>主页>样式中获得)。默认情况下,所有单元格都使用“正常”样式,因此通过设置
IRange.style.Interior
可以为所有使用“正常”样式的单元格(即工作簿中的所有单元格)设置颜色

要设置不影响使用该样式的任何其他单元格的单个单元格颜色,需要直接在IRange下设置,例如:

cells[0, 0].Font.Size = 20;
cells["A6"].Interior.Color = System.Drawing.Color.FromArgb(166,166,166);

SpreadsheetGear.Color.FromArgb
而不是
System.Drawing.Color.FromArgb
System.Drawing.Color
用于SpreadsheetGear 2010及更早版本。SpreadsheetGear 2012将其更改为使用自己的
SpreadsheetGear.Color
struct。请在“帮助”页面中阅读有关此更改的更多信息。OP指示系统。绘图,因此我相应地匹配了我的答案。
cells[0, 0].Font.Size = 20;
cells["A6"].Interior.Color = System.Drawing.Color.FromArgb(166,166,166);