Hiển thị các bài đăng có nhãn OpenXML2.0. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn OpenXML2.0. Hiển thị tất cả bài đăng

Thứ Ba, 20 tháng 12, 2016

Mô hình thêm mới 01 cell trong dinte openxml

1. Khi tạo một workbook, đã mặc định thêm mới 1 thành phần style vào stylesheet bằng hàm
WorkbookStylesPart stylesPart = _workbookPart.AddNewPart<WorkbookStylesPart>(); stylesPart.Stylesheet = CStyle.GenerateStyleSheet();
 stylesPart.Stylesheet.Save();

2. Khi khởi tạo một style, đã khởi tạo các thành phần cơ bản
cStyle = new CStyle();
Trong CStyle.cs
public CStyle()
        {
            numberFormatCode = null;
            fontSize = 11;
            fontName = "TimeNewRoman";
            fontColor = "000";
            fontBold = false;
            fontItalic = false;
            fillPattern = PatternValues.None;
            fillForeGroundColor = null;
            borderLeftColor = null;
            borderLeftStyleValue = BorderStyleValues.None;
            borderBottomColor = null;
            borderBottomStyleValue = BorderStyleValues.None;
            borderRightColor = null;
            borderRightStyleValue = BorderStyleValues.None;
            borderTopColor = null;
            borderTopStyleValue = BorderStyleValues.None;
            alignmentHorizontal = HorizontalAlignmentValues.Left;
            alignmentVertical = VerticalAlignmentValues.Center;
            wrapText = true;
            textRotate = (uint)0;
        }
3. Có thể khai báo các thuộc tính cho style thông qua
cStyle.alignmentHorizontal = HorizontalAlignmentValues.Left;
 Style.fontName = "Times New Roman";
 cStyle.fontSize = 12;
 Khi cStyle.CreateStyle(); sẽ tạo style theo tất cả các thuộc tính đã set -> CStyle.cs (line 97), hàm này sẽ bổ sung các thuộc tính quan trọng:
         public Fill _oFill { get; set; }
        public Border _oBorder { get; set; }
        public Font _oFont { get; set; }
        public Alignment _oAlignment { get; set; }
        public NumberingFormat _oNumberingFormat { get; set; }
Chú ý:
Riêng đối với _oNumberingFormat phải quan tâm tới NumberFormatId
Hàm InsertNumberingFormat
public uint InsertNumberingFormat(NumberingFormat numberingFormat, WorkbookPart workbookPart)
        {
            NumberingFormats numberingFormats = workbookPart.WorkbookStylesPart.Stylesheet.Elements<NumberingFormats>().First();
            //cập nhật id cho numberingFormat
            numberingFormat.NumberFormatId = numberingFormats.Count;
            numberingFormats.Append(numberingFormat);
            return (uint)numberingFormats.Count++;
        } 

Cuối cùng, hàm
public uint GetStyleIndex(WorkbookPart _workbookPart, Cell cell)
        {
            CellFormat cellFormat = cell.StyleIndex != null ? this.GetCellFormat(cell.StyleIndex, _workbookPart).CloneNode(true) as CellFormat : new CellFormat();
            this.AppendCellFormat(cellFormat, _workbookPart); //là hàm quan trọng để tạo các format
            uint styleIndex = this.InsertCellFormat(cellFormat, _workbookPart);
            return styleIndex;
        }

Sẽ thêm mới một style và trả về styleIndex