Estoy tratando de obtener el color de fondo de una celda en una hoja de cálculo de Excel. Estoy usando Open XML 2.0 SDK y puedo abrir el archivo * .xlsx y obtener valores de celda, por ejemplo. Mi código para conseguir el color de fondo es la siguiente:Obtener cell-backgroundcolor en Excel con Open XML 2.0
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;
}
Mi problema aquí es que PatternFill.BackgroundColor
vuelve simplemente un número natural, creo que es el id del estilo. Mi problema es que la línea de código
DocumentFormat.OpenXml.Spreadsheet.Color c = (DocumentFormat.OpenXml.Spreadsheet.Color)styles.Stylesheet.Colors.ChildElements[Int32.Parse(backGroundColor.InnerText)];
devuelve un error, porque es Stylesheet.Colors
null
... ... tal vez es porque he usado un "construido en" color en Excel - no es un auto-definido ¡¿color?!
Alguna idea de cómo podría "calcular" el número de color real de "backGroundColor-Value"?
El SpreadsheetReader clase no existe en OpenXML 2,5 – Elmue