我想要在Excel電子表格中獲取單元格的背景顏色。我使用的是Open XML 2.0 SDK,我可以打開* .xlsx文件並獲取單元格值。我對獲得背景顏色代碼如下:使用Open XML 2.0在Excel中獲取cell-backgroundcolor
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
回報只是一個自然數,我認爲這是風格的ID。我的問題是,代碼
DocumentFormat.OpenXml.Spreadsheet.Color c = (DocumentFormat.OpenXml.Spreadsheet.Color)styles.Stylesheet.Colors.ChildElements[Int32.Parse(backGroundColor.InnerText)];
返回一個錯誤的路線,因爲Stylesheet.Colors
是null
......也許是因爲我使用了「中建」顏色在Excel中 - 而不是一個自定義的顏色?!
任何想法如何「計算」從「backGroundColor-Value」真實的顏色數?
類SpreadsheetReader不存在的OpenXML 2.5 – Elmue