Я пытаюсь получить цвет фона ячейки в электронной таблице 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.Colors
is null
... ... может быть, это потому, что я использовал "встроенный "Цвет в Excel - не самоопределяемый цвет?!
Любые идеи, как я мог бы "вычислить" реальный номер цвета из "backGroundColor-Value"?