Example #1
0
        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);
        }