NPOI 创建 DOCX 常用操作
1、 创建文档
XWPFDocument m_Docx = new XWPFDocument();
2、 页面设置
//1‘=1440twip=25.4mm=72pt(磅 point)=96px(像素 pixel)
//1px(像素 pixel)=0.75pt(磅 point)
// A4:W=11906 twip=8.269''=210mm,h=16838 twip=11.693''=297mm
//A5:W=8390 twip=5.827''=148mm,h=11906 twip=8.269''=210mm
//A6:W=5953 twip=4.134''=105mm,h=8390 twip=5.827''=1148mm
//16k195mmX270mm:
//16k184mmX260mm:
//16k197mmX273mm:
CT_SectPr m_SectPr = new CT_SectPr();
//页面设置 A4 横向
m_SectPr.pgSz.w = (ulong)16838;
m_SectPr.pgSz.h = (ulong)11906;
m_Docx.Document.body.sectPr = m_SectPr;
3、 创建段落
1) XWPFParagraph gp = m_Docx.CreateParagraph();
2) CT_P m_p = m_Docx.Document.body.AddNewP();
m_p.AddNewPPr().AddNewJc().val = ST_Jc.center;//段落水平居中
XWPFParagraph gp = new XWPFParagraph(m_p, m_Docx); //创建 XWPFParagraph
4、 段首行缩进
gp.IndentationFirstLine=(int)100;
可以用一个函数计算
protected int Indentation(String fontname, int fontsize, int Indentationfonts, FontStyle fs)
{
//字显示宽度,用于段首行缩进
//字号与 fontsize 关系
//初号(0 号)=84,小初=72,1 号=52,2 号=44,小 2=36,3 号=32,小 3=30,4 号=28,
//小 4=24,5 号=21,小 5=18,6 号=15,小 6=13,7 号=11,8 号=10
Graphics m_tmpGr = this.CreateGraphics();
m_tmpGr.PageUnit = GraphicsUnit.Point;
SizeF size = m_tmpGr.MeasureString("好", new Font(fontname, fontsize * 0.75F, fs));
return (int)size.Width * Indentationfonts * 10;
}
gp.IndentationFirstLine = Indentation("宋体", 21, 2, FontStyle.Regular);//段首行缩进 2 字符
5、 行距设置
//单倍为默认值(240twip)不需设置,1.5 倍=240X1.5=360twip,2 倍=240X2=480twip
m_p.AddNewPPr().AddNewSpacing().line = "400";//行距固定 20 磅
m_p.AddNewPPr().AddNewSpacing().lineRule = ST_LineSpacingRule.exact;
6、 创建 RUN