大名鼎鼎的NPOI用来导出EXCEL的文章园子里面有很多,可是用来导出WORD文档的文章大都含糊不清,最近刚好完成一个导出WORD文档的需求,在此分享下。

NPOI里面认为word文档的最基本的结构是段落,代表这个段落的类就是XWPFParagraph,使用这个类可以设置段落里面的字体、大小、以及是否加粗等。

代表整个文档的的类XWPFDocument,是最外层的容器相当于一个word文档的实例,代表表格的类XWPFTable,是较小级别的段落容器相当于一个表格的实例。

一个XWPFDocument可以添加多个XWPFTable和多个XWPFParagraph,一个XWPFTable可以添加多个XWPFParagraph

现在我们要创建一个有几个段落和表格的word文档,其中,表格里面要显示带格式的文字(微软雅黑,小四),形如

首先,需要创建一个XWPFDocument doc = new XWPFDocument(),随后用文档实例doc创建段落1~段落n

            XWPFParagraph p0 = doc.CreateParagraph();
p0.SetAlignment(ParagraphAlignment.LEFT);
XWPFRun r0 = p0.CreateRun();
r0.SetFontFamily("宋体");
r0.SetFontSize();
r0.SetBold(true);
r0.SetText("未登录过学生的账号密码"); XWPFParagraph p1 = doc.CreateParagraph();
p1.SetAlignment(ParagraphAlignment.LEFT);
XWPFRun r1 = p1.CreateRun();
r1.SetFontFamily("宋体");
r1.SetFontSize();
r1.SetBold(true);
r1.SetText("(备注:已登录过的学生密码不显示)"); XWPFParagraph p2 = doc.CreateParagraph();
p2.SetAlignment(ParagraphAlignment.LEFT);
XWPFRun r2 = p2.CreateRun();
r2.SetFontFamily("宋体");
r2.SetFontSize();
r2.SetBold(true);
r2.SetText("学校:XX一中"); XWPFParagraph p3 = doc.CreateParagraph();
p3.SetAlignment(ParagraphAlignment.LEFT);
XWPFRun r3 = p3.CreateRun();
r3.SetFontFamily("宋体");
r3.SetFontSize();
r3.SetBold(true);
r3.SetText("班级:(7)"); XWPFParagraph p4 = doc.CreateParagraph();
p4.SetAlignment(ParagraphAlignment.LEFT);
XWPFRun r4 = p4.CreateRun();
r4.SetFontFamily("宋体");
r4.SetFontSize();
r4.SetBold(true);
r4.SetText("班主任:ddd"); XWPFParagraph p5 = doc.CreateParagraph();
p5.SetAlignment(ParagraphAlignment.LEFT);
XWPFRun r5 = p5.CreateRun();
r5.SetFontFamily("宋体");
r5.SetFontSize();
r5.SetBold(true);
r5.SetText("可以在此处添加备注:");

然后用doc创建个4行4列XWPFTable table = doc.CreateTable(4, 4)

接着很多人根据vs的点出来的方法或者是NPOI原作者tonyqus的教程http://tonyqus.sinaapp.com/archives/614,使用table的单元格的SetParagraph()方法直接设置构造好的段落就行了,但是,事实证明这样做是不对的,这样的话会使得构造出来的段落不光会显示在table里面,而且还会显示在其他地方。正确的方法应该是使用table单元格的AddParagraph()方法直接生成一个专属于表格的段落。

                     XWPFParagraph pIO = table.GetRow(i).GetCell().AddParagraph();
XWPFRun rIO = pIO.CreateRun();
rIO.SetFontFamily("微软雅黑");
rIO.SetFontSize();
rIO.SetBold(true);
rIO.SetText(i.ToString()); XWPFParagraph pINo =table.GetRow(i).GetCell().AddParagraph();
XWPFRun rINo = pINo.CreateRun();
rINo.SetFontFamily("微软雅黑");
rINo.SetFontSize();
rINo.SetBold(true);
rINo.SetText(notLoginStudents[i - ].UserName); XWPFParagraph pIMm = table.GetRow(i).GetCell().AddParagraph();
XWPFRun rIMm = pIMm.CreateRun();
rIMm.SetFontFamily("微软雅黑");
rIMm.SetFontSize();
rIMm.SetBold(true);
rIMm.SetText(notLoginStudents[i - ].PassWord); XWPFParagraph pIName = table.GetRow(i).GetCell().AddParagraph();
XWPFRun rIName = pIName.CreateRun();
rIName.SetFontFamily("微软雅黑");
rIName.SetFontSize();
rIName.SetBold(true);
rIName.SetText(notLoginStudents[i - ].StudentName);

随后,把文档写入流doc.Write(new MemoryStream()),接着你想干神马就都OK了。

NPOI 2.0导出word(docx格式)的更多相关文章

  1. NPOI插件生成导出word文档

    因为之前没有接触NPOI过这个插件,所以几乎都是自己一边百度摸索一边学习. 这个插件对于Excel的数据导入和导出,可以说是很方便了, 但是对于导出word文档,可以说是很少的,百度了很多....也不 ...

  2. jQuery wordexport导出 word

    同事给我说了简单的导出word的插件,亲测了下,做个随笔. 这个导出插件是jQuery自带的的插件,通过调用wordexport.js来实现导出功能. 1.引入的js <script type= ...

  3. java导出2007版word(docx格式)freemarker + xml 实现

    http://blog.csdn.net/yigehui12/article/details/52840121 Freemarker+xml生成docx 原理概述:word从2003版就支持xml格式 ...

  4. 【c#搬砖记】用Docx导出word格式的docx文件

    DocX开源网址:http://docx.codeplex.com/ 1.引入DocX.dll 调用ReplaceText()方法替换模板中的字符.只支持docx格式的word文档 using (Do ...

  5. .net core 使用NPOI填充Word模板导出Word

    最近工作用到在Word模板插入数据库数据,导出一个带数据的Word文件,想起来之前操作Word都是用微软提供的Microsoft.Office.Interop.Word,而在最新的..NET CORE ...

  6. c#.Net:Excel导入/导出之NPOI 2.0简介

      NPOI 2.0+主要由SS, HPSF, DDF, HSSF, XWPF, XSSF, OpenXml4Net, OpenXmlFormats组成,具体列表如下: 资料来自:百度百科   Ass ...

  7. poi导出word文档,doc和docx

    maven <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency> <gro ...

  8. FineReader Mac如何设置参数让导出为DOCX/RTF/ODT格式

    Mac版ABBYY FineReader OCR文字识别软件识别文档之后,可以将已识别的文本保存到文件中,还可以通过电子邮件发送输出格式受FineReader支持的已识别文本,了解了ABBYY Fin ...

  9. NPOI导出word,以及对table的一些设置

    参考网址:http://www.aiuxian.com/article/p-1970779.html NPOI版本:2.1.3.1 最终效果图: 代码: /// <summary> /// ...

随机推荐

  1. 【Apache运维基础(3)】虚拟主机配置说明

    建议在主配置文件中增加一句 Include conf/vhosts/*.conf 然后就在vhosts目录下添加虚拟主机配置文件 在配置前打开NameVirtualHost *:80注释,注意此处要与 ...

  2. ActiveMQ和Tomcat的整合应用(转)

    转自:http://topmanopensource.iteye.com/blog/1111321 ActiveMQ和Tomcat的整合应用 博客分类: ActiveMQ学习和研究   在Active ...

  3. Tomcat打印运行时日志(控制台),访问日志,启动日志

    1.sh catlina.sh run以控制台形式输出 2.sever.xml.配置acesslog,设置访问日志输出 Tomcat的访问日志是靠org.apache.catalina.valves. ...

  4. iOS 深拷贝和浅拷贝

    注意,本文只说结论不说过程 1. 对于系统的非容器类对象,我们可以认为,如果对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝).如果是对可变对象复制,都是深 ...

  5. *在Win7中安装JDK1.7并配置环境变量

    安装的过程就不废话了. 下面是环境变量的配置. 1. 配置环境变量 单机右键‘计算机--属性’  2.点击高级系统设置  3.点击‘环境变量’ 4.增加"JAVA_HOME"系统变 ...

  6. JVM垃圾回收机制总结(7) :调优方法

    JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...

  7. C# 公关类(全)

    http://tool.sufeinet.com/CodePreview/CodeView.aspx?action=view&file=FTP/FTPClient.cs

  8. javascript QUnit 单元测试

    <!doctype html> <html> <head lang="zh-CN" dir="ltr"> <meta ...

  9. VMware VMware各版本

    VMware各版本 一.VMware  vSphere5: VMware vSphere5 取代原 VMware ESX 二.VMware ESXI/VMware Citrix/VMware XenS ...

  10. MVC 的知识

    MVC   的知识 下载地址: 1. NET Framework4下载地址: http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyI ...