2017-02-15 3 views
0

Ich versuche, einige Zellen in einer generierten Tabelle einige Stile hinzuzufügen.Die Stile der Tabelle funktionieren nicht

private static Stylesheet CreateStylesheet() 
    { 
     Stylesheet stylesheet = new Stylesheet(); 

     Fonts fonts = new Fonts(); 
     fonts.Append(
      new DocumentFormat.OpenXml.Spreadsheet.Font(
       new Bold(), 
       new FontSize() { Val = 10 }, 
       new DocumentFormat.OpenXml.Spreadsheet.Color() { Rgb = new HexBinaryValue() { Value = "000000" } }, 
       new FontName() { Val = "Arial Narrow" } 
      ) 
     ); 
     fonts.Append(
      new DocumentFormat.OpenXml.Spreadsheet.Font(
       new FontSize() { Val = 10 }, 
       new DocumentFormat.OpenXml.Spreadsheet.Color() { Rgb = new HexBinaryValue() { Value = "000000" } }, 
       new FontName() { Val = "Arial Narrow" } 
      ) 
     ); 
     fonts.Append(
      new DocumentFormat.OpenXml.Spreadsheet.Font(
       new Bold(), 
       new FontSize() { Val = 12 }, 
       new DocumentFormat.OpenXml.Spreadsheet.Color() { Rgb = new HexBinaryValue() { Value = "000000" } }, 
       new FontName() { Val = "Arial Narrow" } 
      ) 
     ); 
     fonts.Append(
      new DocumentFormat.OpenXml.Spreadsheet.Font(
       new Bold(), 
       new FontSize() { Val = 14 }, 
       new DocumentFormat.OpenXml.Spreadsheet.Color() { Rgb = new HexBinaryValue() { Value = "000000" } }, 
       new FontName() { Val = "Arial Narrow" } 
      ) 
     ); 

     stylesheet.Fonts = fonts; 

     Fill fill3 = new Fill(); 
     PatternFill patternFill3 = new PatternFill() { PatternType = PatternValues.Solid }; 
     ForegroundColor foregroundColor1 = new ForegroundColor() { Rgb = "FFFF0000" }; 
     BackgroundColor backgroundColor1 = new BackgroundColor() { Indexed = (UInt32Value)64U }; 
     patternFill3.Append(foregroundColor1); 
     patternFill3.Append(backgroundColor1); 
     fill3.Append(patternFill3); 

     Fills fills = new Fills(); 
     fills.Append(
      new Fill(
       new PatternFill() { PatternType = PatternValues.None } 
      ) 
     ); 

     fills.Append(fill3); 

     stylesheet.Fills = fills; 

     Borders borders = new Borders(); 
     borders.Append(new Border()); 
     borders.Append(
      new Border(
       new LeftBorder(), 
       new RightBorder(), 
       new TopBorder(), 
       new BottomBorder() 
      ) 
     ); 

     stylesheet.Borders = borders; 

     NumberingFormats numberingFormats = new NumberingFormats(); 

     NumberingFormat currencyFormat = new NumberingFormat(); 
     currencyFormat.NumberFormatId = UInt32Value.FromUInt32(3453); 
     currencyFormat.FormatCode = StringValue.FromString("###,0 €"); 
     numberingFormats.Append(currencyFormat); 
     stylesheet.NumberingFormats = numberingFormats; 

     CellFormats formats = new CellFormats(); 
     formats.Append(new CellFormat 
     { 
      FontId = 1U, 
      FillId = 0U, 
      BorderId = 1U, 
      ApplyFont = true, 
      ApplyAlignment = true, 
      Alignment = new Alignment() 
      { 
       Horizontal = HorizontalAlignmentValues.Center, 
       Vertical = VerticalAlignmentValues.Center 
      } 
     }); 
     formats.Append(new CellFormat 
     { 
      FontId = 2U, 
      BorderId = 1U, 
      ApplyFont = true, 
      Alignment = new Alignment() 
      { 
       Horizontal = HorizontalAlignmentValues.Left, 
       Vertical = VerticalAlignmentValues.Center 
      } 
     }); 
     formats.Append(new CellFormat 
     { 
      FontId = 1U, 
      FillId = 0U, 
      BorderId = 0U, 
      NumberFormatId = currencyFormat.NumberFormatId, 
      ApplyFill = true, 
      ApplyFont = true, 
      ApplyBorder = true, 
      ApplyNumberFormat = true 
     }); 
     formats.Append(new CellFormat 
      { 
       FontId = 0U, 
       FillId = 0U, 
       BorderId = 0U, 
       ApplyFont = true 
      } 
     ); 
     formats.Append(new CellFormat 
      { 
      FontId = 3U, 
      FillId = 0U, 
      BorderId = 0U, 
      ApplyFont = true 
      } 
     ); 

     stylesheet.CellFormats = formats; 

     return stylesheet; 
    } 

Ich muss einige dieser Stile auf die Zellen anwenden, die in das Blatt eingefügt werden. Ich gehe davon aus, dass Zellenformate die verfügbaren Stile sind. Mache ich hier etwas falsch?

Dieser Code erstellt nur das Stylesheet.

Ich verwende die folgende Montage: DocumentFormat.OpenXml (Version 2.7.1) Aus der Quelle erhalten wurde: https://github.com/OfficeDev/Open-XML-SDK

Nachdem das Stylesheet definieren, erstelle ich eine Zelle mit einem ähnlichen Code wie folgt aus:

Cell cell = InsertCellInWorksheet(workSheet, addressName, 0U); 
cell.CellValue = new CellValue(value); 
cell.DataType = new EnumValue<CellValues>(CellValues.Number); 
cell.StyleIndex = 1U; 

Antwort

Verwandte Themen