C#使用NPOI导出Word文件

516 阅读2分钟

「这是我参与2022首次更文挑战的第36天,活动详情查看:2022首次更文挑战」。

欢迎各位朋友微信搜索「Andy阿辉」关注一波!

写一些程序员的所思所想,希望对你有帮助。

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

前言

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

在操作Word的时候,需要用到的组件是XWPFDocument类,通过它来操作将数据写入Word中, 其中可以对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一些细节性的东西放在下一篇文章来做介绍。

寄语

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

原创不易,给个关注。

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

很高兴能和您成为朋友。