Получение цвета фона ячейки в Excel с помощью Open XML 2.0

Я пытаюсь получить цвет фона ячейки в электронной таблице Excel. Я использую Open XML 2.0 SDK, и я могу открыть файл *.xlsx и, например, получить значения ячеек. Мой код для получения Background-Color следующий:

   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;
    }

Моя проблема в том, что PatternFill.BackgroundColorвозвращает просто натуральное число, я думаю, что это идентификатор стиля. Моя проблема в том, что строка кода

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

возвращается с ошибкой, потому что Stylesheet.Colorsis null... ... может быть, это потому, что я использовал "встроенный "Цвет в Excel - не самоопределяемый цвет?!

Любые идеи, как я мог бы "вычислить" реальный номер цвета из "backGroundColor-Value"?

6
задан basti 25 May 2012 в 14:27
поделиться