控制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;
}
}
}
字號字典