2017-02-12 51 views
1

设置所需的背景颜色在Excel中我是新开放的XML,并试图设置标题行的背景颜色为灰色,但它总是将它设置为黑色。请参考我正在使用的以下代码。无法使用OPENXML

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 

生成的输出: enter image description here

所需的输出: enter image description here

请帮助我。在此先感谢

回答

2

PatternFill(部分ECMA-376 standard的32年8月18日)的文件说(重点煤矿):

对于固体细胞填充(无 模式),fgColor使用。对于细胞与指定的模式填充,则该单元格填充色由BGCOLOR 元素中指定。

已指定PatternType = PatternValues.Solid但您提供BackgroundColor而非ForegroundColor。从BackgroundColor更改为ForegroundColor将解决您的问题,即这条线:

new BackgroundColor() { Rgb = new HexBinaryValue(){ Value = "808080" } } 

应该变成:

new ForegroundColor() { Rgb = new HexBinaryValue() { Value = "808080" } }