首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用openxml在excel中设置所需的背景色

无法使用openxml在excel中设置所需的背景色
EN

Stack Overflow用户
提问于 2017-02-12 05:23:37
回答 1查看 6.4K关注 0票数 3

我刚开始打开xml,并尝试将标题行的背景色设置为灰色,但它总是将其设置为黑色。请参考下面的代码,我正在使用。

代码语言:javascript
运行
复制
return new Stylesheet(
            new Fonts(
                new Font(                                                               // Index 0 - The default font.
                    new DocumentFormat.OpenXml.Spreadsheet.FontSize() { Val = 11 },
                    new Color() { Rgb = new HexBinaryValue() { Value = "000000" } },
                    new FontName() { Val = "Calibri" }),
                new Font(                                                               // Index 1 - The bold white font.
                    new DocumentFormat.OpenXml.Spreadsheet.Bold(),
                    new DocumentFormat.OpenXml.Spreadsheet.FontSize() { Val = 11 },
                    new DocumentFormat.OpenXml.Spreadsheet.Color() { Rgb = new HexBinaryValue() { Value = "ffffff" } },
                    new DocumentFormat.OpenXml.Spreadsheet.FontName() { Val = "Calibri" }),

                new Font(                                                               // Index 2 - The bold red font.
                    new DocumentFormat.OpenXml.Spreadsheet.Bold(),
                    new DocumentFormat.OpenXml.Spreadsheet.FontSize() { Val = 11 },
                    new DocumentFormat.OpenXml.Spreadsheet.Color() { Rgb = new HexBinaryValue() { Value = "ff0000" } },
                    new DocumentFormat.OpenXml.Spreadsheet.FontName() { Val = "Calibri" }),
                new Font(                                                               // Index 2 - The bold red font.
                    new DocumentFormat.OpenXml.Spreadsheet.Bold(),
                    new DocumentFormat.OpenXml.Spreadsheet.FontSize() { Val = 11 },
                    new DocumentFormat.OpenXml.Spreadsheet.Color() { Rgb = new HexBinaryValue() { Value = "000000" } },
                    new DocumentFormat.OpenXml.Spreadsheet.FontName() { Val = "Calibri" })
            ),
            new Fills(
                new Fill(                                                           // Index 0 - The default fill.
                    new PatternFill() { PatternType = PatternValues.None }),
                new Fill(                                                           // Index 1 - The default fill of gray 125 (required)
                    new PatternFill() { PatternType = PatternValues.Gray125 }),
                new Fill(                                                           // Index 2 - The blue fill.
                    new PatternFill(
                        new ForegroundColor() { Rgb = new HexBinaryValue() { Value = "006699" } }
                    ) { PatternType = PatternValues.Solid }),
                 new Fill(                                                           // Index 3 - The grey fill.
                    new PatternFill(
                        new  BackgroundColor () { Rgb = new HexBinaryValue(){  Value = "808080" } }
                    )
                    { PatternType = PatternValues.Solid }
                   )
            ),
            new Borders(
                new Border(                                                         // Index 0 - The default border.
                    new LeftBorder(),
                    new RightBorder(),
                    new TopBorder(),
                    new BottomBorder(),
                    new DiagonalBorder()),
                new Border(                                                         // Index 1 - Applies a Left, Right, Top, Bottom border to a cell
                    new LeftBorder(
                        new Color() { Auto = true }
                    ) { Style = BorderStyleValues.Thin },
                    new RightBorder(
                        new Color() { Auto = true }
                    ) { Style = BorderStyleValues.Thin },
                    new TopBorder(
                        new Color() { Auto = true }
                    ) { Style = BorderStyleValues.Thin },
                    new BottomBorder(
                        new Color() { Auto = true }
                    ) { Style = BorderStyleValues.Thin },
                    new DiagonalBorder())
            ),
            new CellFormats(
                new CellFormat(new Alignment() { Horizontal = HorizontalAlignmentValues.Center, Vertical = VerticalAlignmentValues.Center }) { FontId = 1, FillId = 0, BorderId = 0 },                      // Index 0 - The default cell style.  If a cell does not have a style index applied it will use this style combination instead

                new CellFormat(
                                new Alignment() { Horizontal = HorizontalAlignmentValues.Center, Vertical = VerticalAlignmentValues.Center }
                                ) { FontId = 1, FillId = 2, BorderId = 0, ApplyFont = true },   // Index 1 - Bold White Blue Fill

                new CellFormat(new Alignment() { Horizontal = HorizontalAlignmentValues.Center, Vertical = VerticalAlignmentValues.Center }
                                ) { FontId = 2, FillId = 2, BorderId = 0, ApplyFont = true }   , // Index 2 - Bold Red Blue Fill
                new CellFormat(new Alignment() { Horizontal = HorizontalAlignmentValues.Center, Vertical = VerticalAlignmentValues.Center }
                                )
                { FontId = 3, FillId = 3, BorderId = 0, ApplyFont = true }
            )
        ); // return

产生的产出:

期望产出:

请帮帮我。提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-13 13:21:25

PatternFill的文档(ECMA-376标准第18.8.32节)说:

用于实体单元格填充(无模式),fgColor使用。对于单元格填充指定的模式,则由bgColor元素指定单元格填充颜色。

您已经指定了PatternType = PatternValues.Solid,但是您提供的是BackgroundColor而不是ForegroundColor。从BackgroundColor改为ForegroundColor将解决您的问题,即这一行:

代码语言:javascript
运行
复制
new BackgroundColor() { Rgb = new HexBinaryValue(){  Value = "808080" } }

应成为:

代码语言:javascript
运行
复制
new ForegroundColor() { Rgb = new HexBinaryValue() { Value = "808080" } }
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42184472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档