NPOI在Word中的简单用法汇总

Andy阿辉 发表于 2022/02/24 21:48:09 2022/02/24
【摘要】 欢迎您成为我的读者,希望这篇文章能给你一些帮助。 前言今天这篇文章,咱们来看看使用NPOI操作Word都有哪些方法。对于Word文件,前天的文章介绍了要生成一个Word文件需要五步。1、初始化文档类XWPFDocument;2、场景主标题段落3、自定义内容4、创建页脚5、写入文件创建文档文档在NPOI用XWPFDocument类进行操作,首先需要实例化一个XWPFDocument类,用于后期...

欢迎您成为我的读者,希望这篇文章能给你一些帮助。

前言

今天这篇文章,咱们来看看使用NPOI操作Word都有哪些方法。

对于Word文件,前天的文章介绍了要生成一个Word文件需要
五步。

1、初始化文档类XWPFDocument;
2、场景主标题段落
3、自定义内容
4、创建页脚
5、写入文件

创建文档

文档在NPOI用XWPFDocument类进行操作,首先需要实例化一个XWPFDocument类,用于后期生成文档类的操作。

XWPFDocument m_Docx = new XWPFDocument();

页面设置

实例化好之后需要对Word文档进行设置,主要设置其显示像素,页面的大小等。

CT_SectPr m_SectPr = newCT_SectPr();

//页面设置A4横向

m_SectPr.pgSz.w = (ulong)16838;

m_SectPr.pgSz.h = (ulong)11906;

m_Docx.Document.body.sectPr = m_SectPr; 

创建段落

对于Word文档的操作都是在文档中段落里面完成的。比如我想新建一行文字,就必须先创建段落,后在段落中进行文字的添加,往Word文档中添加表格和图片也是同样的道理。

//创建段落对象
XWPFParagraph p1 = m_Docx .CreateParagraph();

创建表格

XWPFTable oneTable = m_Docx.CreateTable(6, 5);
oneTable.Width = 1000 * 5;

/* 设置列宽 */
oneTable.SetColumnWidth(0, 200);
oneTable.SetColumnWidth(1, 300);
oneTable.GetRow(0).GetCell(0).SetParagraph(SetCellText(doc, tableTop, "测试"));

样式设置

1、段落居中显示

//字体居中
p1.Alignment = ParagraphAlignment.CENTER;

2、文字加粗

XWPFRun runTitle = p1.CreateRun();
runTitle.IsBold = true;
runTitle.SetText("测试");
runTitle.FontSize = 16;
runTitle.SetFontFamily("宋体", FontCharRange.None);//设置雅黑字体

3、设置单元格样式

CT_P para = new CT_P();
XWPFParagraph pCell = new XWPFParagraph(para, table.Body);  
pCell.Alignment = align;
 
/字体设置
XWPFRun r1c1 = pCell.CreateRun();
r1c1.SetText(setText);
r1c1.FontSize = 11;
r1c1.SetFontFamily("宋体", FontCharRange.None);
//设置高度
r1c1.SetTextPosition(textPos);   

4、段行缩进

gp.IndentationFirstLine=(int)100

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、行高设置

m_Row.GetCTRow().AddNewTrPr().AddNewTrHeight().val= (ulong)426;
m_NewRow.AddNewTrPr().AddNewTrHeight().val= (ulong)426;

7、添加脚注内容

其实脚注内容就是之前格式的反复利用。

int Id =m_ftns.GetFootnotesList().Count;

CT_FtnEdn m_ftnedn = new CT_FtnEdn();

m_ftnedn.id = Id.ToString();

CT_P m_FtnEdnxmlP =m_ftnedn.AddNewP();

CT_PPr m_FtnEdnxmlPPr =m_FtnEdnxmlP.AddNewPPr();

m_FtnEdnxmlPPr.AddNewPStyle().val = "a6";

m_FtnEdnxmlPPr.AddNewRPr().rFonts = new CT_Fonts();

m_FtnEdnxmlPPr.AddNewRPr().rFonts.hint = ST_Hint.eastAsia;

CT_R m_FtnEdnxmlR =m_FtnEdnxmlP.AddNewR();

m_FtnEdnxmlR.AddNewRPr().rStyle = new CT_String();

m_FtnEdnxmlR.AddNewRPr().rStyle.val = "a7";

m_FtnEdnxmlR.Items = newSystem.Collections.ArrayList();

m_FtnEdnxmlR.Items.Add(new CT_Empty());

m_FtnEdnxmlR.ItemsElementName = new List<RunItemsChoiceType>();

m_FtnEdnxmlR.ItemsElementName.Add(RunItemsChoiceType.footnoteRef);

m_FtnEdnxmlR = m_FtnEdnxmlP.AddNewR();

m_FtnEdnxmlR.AddNewT().Value = " ";

m_FtnEdnxmlR = m_FtnEdnxmlP.AddNewR();

m_FtnEdnxmlR.AddNewT().Value = strFtnEdn; //"脚注test内容

 XWPFFootnotem_fn = m_ftns.AddFootnote(m_ftnedn);

寄语

人生短暂,我不想去追求自己看不见的,我只想抓住我能看得见的。

原创不易,给个关注。

我是阿辉,感谢您的阅读,如果对你有帮助,麻烦点赞、转发 谢谢。

很高兴能和您成为朋友。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。