Erste Zell-Hintergrundfarbe in Excel mit Open XML 2.0

Ich versuche die Hintergrundfarbe einer Zelle in einer excel-Tabelle. Ich bin mit Open XML 2.0 SDK, und ich bin in der Lage, öffnen Sie die *.xlsx-Datei und um Zell-Werte zum Beispiel. Mein code für die Hintergrund-Farbe ist die folgende:

   public BackgroundColor GetCellBackColor(Cell theCell, SpreadsheetDocument document)
    {
        BackgroundColor backGroundColor = null;
        WorkbookStylesPart styles = SpreadsheetReader.GetWorkbookStyles(document);
        int cellStyleIndex = (int)theCell.StyleIndex.Value;
        CellFormat cellFormat = (CellFormat)styles.Stylesheet.CellFormats.ChildElements[cellStyleIndex];
        Fill fill = (Fill)styles.Stylesheet.Fills.ChildElements[(int)cellFormat.FillId.Value];
        backGroundColor = fill.PatternFill.BackgroundColor;

        return backGroundColor;
    }

Mein problem hier ist, dass PatternFill.BackgroundColor gibt nur eine Natürliche Zahl, ich denke, es ist die id des styles. Mein problem ist, dass die code-Zeile

DocumentFormat.OpenXml.Spreadsheet.Color c = (DocumentFormat.OpenXml.Spreadsheet.Color)styles.Stylesheet.Colors.ChildElements[Int32.Parse(backGroundColor.InnerText)];

gibt einen Fehler zurück, weil Stylesheet.Colors ist null... ...vielleicht liegt es daran, dass ich eine "eingebaute" Farbe in excel - nicht eine selbst definierte Farbe?!

Irgendwelche Ideen, wie ich könnte "berechnen" kann der Reale Farbe-Zahl von der "backGroundColor-Wert"?

Die Klasse SpreadsheetReader nicht existiert, OpenXML 2.5

InformationsquelleAutor basti | 2012-05-25

Schreibe einen Kommentar