【C#】NPOI(2.4.1)生成word中的常用功能

控制word頁內邊距


            //創建document對象
            var doc = new XWPFDocument();
            doc.Document.body.sectPr = new CT_SectPr();
            CT_SectPr m_SectPr = doc.Document.body.sectPr;
            m_SectPr.pgSz.h = (ulong)16838;
            m_SectPr.pgSz.w = (ulong)11906;
            m_SectPr.pgMar.left = (ulong)800;//左邊距
            m_SectPr.pgMar.right = (ulong)800;//右邊距
            m_SectPr.pgMar.top = "850";//上邊距
            m_SectPr.pgMar.bottom = "850";//下邊距

創建段落


            var paragraph = doc.CreateParagraph();
            paragraph.Alignment = ParagraphAlignment.CENTER; //字體居中
            var run = paragraph.CreateRun();
            run.IsBold = true;
            run.SetText(contend);
            run.FontSize = 28;
            run.SetFontFamily("黑體", FontCharRange.None); //設置黑體

控制段落與其他元素的上下距離

            paragraph.SpacingBeforeLines = 20;//上方距離
            paragraph.SpacingAfterLines = 20;//下方距離

換頁(本頁未滿直接寫下一頁)

  paragraph = doc.CreateParagraph();
  paragraph.CreateRun().AddBreak(BreakType.PAGE);

創建表格

            var table = doc.CreateTable(行數, 列數);
            table.Width = 5000;

控制表格中列寬(這裏需要注意,只設置一行的列寬一旦插入文字就會使設置的列寬失效,所以要把每一個單元格都要設置上)

for (int r = 0; r < 8; r++)
{
     SetCellWith(table.GetRow(r).GetCell(0), "600");
     SetCellWith(table.GetRow(r).GetCell(1), "1500");
     SetCellWith(table.GetRow(r).GetCell(2), "1500");
     SetCellWith(table.GetRow(r).GetCell(3), "600");
}

設置表格中單元格豎直居中

var rowcell = table.GetRow(r).GetCell(c);
rowcell.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);

設置單元格內容

            //table中的文字格式設置
            var para = new CT_P();
            var pCell = new XWPFParagraph(para, table.Body);
            pCell.Alignment = paragraphAlignment; //字體居中
            pCell.VerticalAlignment = TextAlignment.CENTER; //字體居中

            var r1c1 = pCell.CreateRun();
            r1c1.SetText(setText);
            r1c1.FontSize = 11;
            r1c1.SetFontFamily("宋體", FontCharRange.None); //設置雅黑字體
            pCell.SpacingAfterLines = 40;
            pCell.SpacingBeforeLines = 40;
            //放入單元格
            table.GetRow(4).GetCell(1).SetParagraph(pCell);

表格中換行(這個版本,網上其他的方法我都試了不好用最後參考的poi)

var run= paragraph.CreateRun();
run.SetText(contends[i]);
run.FontSize = 11;
run.SetFontFamily("宋體", FontCharRange.None); 
run.AddBreak(BreakType.TEXTWRAPPING);//換行

合併單元格

table.GetRow(rowIndex).MergeCells(fromCol, toCol);//合併列

//合併行
 public void MYMergeRows(XWPFTable table, int fromRow, int toRow, int colIndex)
        {

            for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++)
            {
                XWPFTableCell rowcell = table.GetRow(rowIndex).GetCell(colIndex);
                rowcell.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
                CT_Tc cttc = rowcell.GetCTTc();
                if (cttc.tcPr == null)
                {
                    cttc.AddNewTcPr();
                }
                if (rowIndex == fromRow)
                {
                    // The first merged cell is set with RESTART merge value  
                    rowcell.GetCTTc().tcPr.AddNewVMerge().val = ST_Merge.restart;
                }
                else
                {
                    // Cells which join (merge) the first one, are set with CONTINUE  
                    rowcell.GetCTTc().tcPr.AddNewVMerge().val = ST_Merge.@continue;
                }
            }

        }

字號字典

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章