C#使用NPOI导出Word文件

网友投稿 1048 2022-05-30

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

前言

昨天和大家一起学习使用NPOI导出Excel文件的操作,今天咱们看看这个插件在Word中是如何操作的。如何可以将数据快速的导出到Word中。

在操作Word的时候,需要用到的组件是XWPFDocument类,通过它来操作将数据写入Word中,

其中可以对Word进行简单的设置,比如添加图片,添加表格,字体大小颜色做调整等。

C#使用NPOI导出Word文件

具体步骤如下:

1、初始化文档类XWPFDocument;

2、场景主标题段落

3、自定义内容

4、创建页脚

5、写入文件

public void Save_Word(){} { using (FileStream fs=new FileStream(sfd.FileName, FileMode.OpenOrCreate)) { //1、初始化文档 XWPFDocument m_Doc = new XWPFDocument(); CT_SectPr m_SectPrs = new CT_SectPr(); //设置页面格式(宽度) A4横向 m_SectPrs.pgSz.w = (ulong)16838; m_SectPrs.pgSz.h = (ulong)11906; m_Doc.Document.body.sectPr = m_SectPrs; //2、创建主标题段落 XWPFParagraph p1 = m_Doc.CreateParagraph(); p1.Alignment = ParagraphAlignment.LEFT; XWPFRun row1 = p1.CreateRun(); row1.FontFamily = "黑体"; row1.FontSize = 14; row1.IsBold = true; row1.SetText("测试"); //主标题 CT_P doc_p1 = m_Doc.Document.body.GetPArray(0); doc_p1.AddNewPPr().AddNewJc().val = ST_Jc.center; //段落水平居中 标题 //3、自定义内容 XWPFParagraph p2 = m_Doc.CreateParagraph(); p2.Alignment = ParagraphAlignment.LEFT; SettingXWPFRowStyle(p2.CreateRun(), "测试内容", false); //4、创建页脚 m_Doc.Document.body.sectPr = new CT_SectPr(); CT_SectPr m_SectPr = m_Doc.Document.body.sectPr; CT_Ftr m_ftr = new CT_Ftr(); //m_ftr.AddNewP().AddNewR().AddNewT().Value = DateTime.Now.ToString("yyyy-MM-dd"); m_ftr.AddNewP().AddNewR().AddNewT().Value ="1"; XWPFRelation frelation = XWPFRelation.FOOTER; XWPFFooter m_f = (XWPFFooter)m_Doc.CreateRelationship(frelation, XWPFFactory.GetInstance(), m_Doc.FooterList.Count + 1); m_f.SetHeaderFooter(m_ftr); m_f._getHdrFtr().AddNewP().AddNewPPr().AddNewJc().val = ST_Jc.center; CT_HdrFtrRef m_HdrFtr = m_SectPr.AddNewFooterReference(); m_HdrFtr.type = ST_HdrFtr.@default; m_HdrFtr.id = m_f.GetPackageRelationship().Id; //使得页脚居中显示 XWPFParagraph pFooter = m_f.Paragraphs[0]; pFooter.Alignment = ParagraphAlignment.CENTER; //居中 pFooter.Runs[0].FontSize = 12; //5、写入到文件 m_Doc.Write(fs); } }

通过上面的代码就可以实现,使用NPOI导出数据到word中。

这里面还有很多细节性的东西,比如标题加粗,页面居中,创建表格,表格数据合并等。

NPOI目前来说还是很强大的,对于摆脱office组件的限制来说,效果特别好,但是它在处理大量数据时还是存在一些问题。

当数据量过大超过它的限制,就会报内存溢出的Bug。这时候使用者就需要衡量,看项目中是否需要引用。

对于NPOI一些细节性的东西放在下一篇文章来做介绍。

寄语

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

原创不易,给个关注。

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

很高兴能和您成为朋友。

C#

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MongoDB中数据库的操作(增删改查)
下一篇:ThinkPHP多语言如何实现你了解过吗?
相关文章