适用于所有细胞的颜色

时间:2015-02-15 23:31:26

标签: c# spreadsheetgear

我正在尝试将颜色应用于Spreadsheet 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行确认这是样式发生的地方。

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:2)

出于某种原因,访问“样式”部分会导致它将样式应用于整个工作表,而不仅仅是范围。删除“样式”修复了问题

而不是使用

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

使用

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

正确格式化单元格