public void SetCellBackgroundColor(Int32 rowIndex, Int32 columnIndex, String bgColor) { // ищем ячейку и её старый формат Row row = GetRow((UInt32)rowIndex); Cell cell = GetCell(row, (UInt32)columnIndex); CellFormats cellFormats = stylesheet.GetFirstChild <CellFormats>(); CellFormat cellFormat = cellFormats.Elements <CellFormat>().ElementAt <CellFormat>((Int32)cell.StyleIndex.Value); Int32 newCellFormatIndex = cellFormats.Elements <CellFormat>().Count <CellFormat>(); CellFormat newCellFormat = (CellFormat)cellFormat.Clone(); { // новый background ----------------------------------------- проверить существующий to do ... Fills fills = stylesheet.GetFirstChild <Fills>(); Int32 fillIndex = fills.Elements <Fill>().Count <Fill>(); fills.Append( new Fill { PatternFill = new PatternFill { PatternType = PatternValues.Solid, ForegroundColor = new ForegroundColor() { Rgb = "ff" + bgColor } } } ); newCellFormat.FillId = (UInt32)fillIndex; } cellFormats.Append(newCellFormat); cell.StyleIndex = (UInt32)newCellFormatIndex; }
private string GetFormatedValue(CellType cell, CellFormat cellformat) { string value; if (cellformat.NumberFormatId != 0) { WorkbookPart p = GetWorkbookPartFromCell(cell); CellFormats formats = p.WorkbookStylesPart.Stylesheet.CellFormats; /* * var numberFormatId = cellFormat.NumberFormatId.Value; * var numberingFormat = numberingFormats.Cast<NumberingFormat>() * .SingleOrDefault(f => f.NumberFormatId.Value == numberFormatId); * * // Here's yer string! Example: $#,##0.00_);[Red]($#,##0.00) * if (numberingFormat != null && numberingFormat.FormatCode.Value.Contains("mm/dd/yy")) * { * string formatString = numberingFormat.FormatCode.Value; * isDate = true; * } */ string format = formats.Elements <NumberingFormat>() .Where(i => i.NumberFormatId.Value == cellformat.NumberFormatId.Value) .First().FormatCode; double number = double.Parse(cell.InnerText); value = number.ToString(format); } else { value = cell.InnerText; } return(value); }
/// <summary> /// Вставить стиль ячейки используя класс CellFormat /// </summary> /// <param name="cellFormats">Таблица форматов ячеек</param> /// <param name="format">Объект формата ячейки, содержащии информицию о стиле ячейки.</param> /// <returns>ID вставленнго формата ячейки в структуре документа.</returns> public static uint CellFormat(this CellFormats cellFormats, CellFormat format) { var formatIndex = cellFormats.MakeSame(format); cellFormats.Count = (uint)cellFormats.Elements().Count(); return(formatIndex); }
/// <summary> /// Получть стиль ячейки по его ID /// </summary> /// <param name="cellFormats">Таблица форматов ячеек</param> /// <param name="formatIndex">ID формата ячейки</param> /// <returns>Возвращает объект стиля ячейки</returns> public static CellFormat CellFormat(this CellFormats cellFormats, int formatIndex) { return(cellFormats.Elements <CellFormat>().ElementAt(formatIndex)); }