public uint InsertIfNotExist(OpenExcelCellFormat cellFormat) { if (cellFormat == null) { return(0); } uint cellFormatIdx; if (_cellFormatIdx.TryGetValue(cellFormat.UID, out cellFormatIdx)) { return(cellFormatIdx);; } // Deep Clone the CellFormat to avoid 'Cannot insert the OpenXmlElement "newChild" because it is part of a tree. ' exception cellFormat = (OpenExcelCellFormat)cellFormat.Clone(); uint numFmtIdx = 0; if (cellFormat.NumberingFormat != null && !_fontIdx.TryGetValue(cellFormat.NumberingFormat.UID, out numFmtIdx)) { numFmtIdx = (uint)(_numberingFormatIdx.Count) + _customNumFormatIdStarter; _numberingFormatIdx.Add(cellFormat.NumberingFormat.UID, numFmtIdx); _numberingFormats.Add(cellFormat.NumberingFormat); } uint fontIdx = 0; if (cellFormat.Font != null && !_fontIdx.TryGetValue(cellFormat.Font.UID, out fontIdx)) { fontIdx = (uint)(_fontIdx.Count); _fontIdx.Add(cellFormat.Font.UID, fontIdx); _fonts.Add(cellFormat.Font); } uint fillIdx = 0; if (cellFormat.Fill != null && !_fillIdx.TryGetValue(cellFormat.Fill.UID, out fillIdx)) { fillIdx = (uint)(_fillIdx.Count); _fillIdx.Add(cellFormat.Fill.UID, fillIdx); _fills.Add(cellFormat.Fill); } var newCellFormatIdx = (uint)_cellFormatIdx.Count; var alignment = cellFormat.Alignment == null ? null : new Alignment { Horizontal = cellFormat.Alignment.Horizontal, Vertical = cellFormat.Alignment.Vertical, WrapText = cellFormat.Alignment.WrapText, TextRotation = cellFormat.Alignment.TextRotation }; _cellFormatIdx.Add(cellFormat.UID, (newCellFormatIdx)); _cellFormats.Add(new CellFormat { NumberFormatId = numFmtIdx, FontId = fontIdx, FillId = fillIdx, BorderId = 0U, Alignment = alignment }); return(newCellFormatIdx); }
public ISheetBuilder InsertHeaderRow <T>(List <OpenExcelColumn <T> > columns, OpenExcelCellFormat cellFormat, OpenExcelRowProperties rowProperties = null) { var headerColumns = columns.Select(x => new OpenExcelColumn <string>(x.Name, CellValues.SharedString, y => x.Name) { CellFormat = x.HeaderCellFormat ?? cellFormat }).ToList(); (this as ISheetBuilder).InsertRowData("", headerColumns, rowProperties); return(this); }