NPOI 2.0导出word(docx格式)
大名鼎鼎的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格式)的更多相关文章
- NPOI插件生成导出word文档
因为之前没有接触NPOI过这个插件,所以几乎都是自己一边百度摸索一边学习. 这个插件对于Excel的数据导入和导出,可以说是很方便了, 但是对于导出word文档,可以说是很少的,百度了很多....也不 ...
- jQuery wordexport导出 word
同事给我说了简单的导出word的插件,亲测了下,做个随笔. 这个导出插件是jQuery自带的的插件,通过调用wordexport.js来实现导出功能. 1.引入的js <script type= ...
- java导出2007版word(docx格式)freemarker + xml 实现
http://blog.csdn.net/yigehui12/article/details/52840121 Freemarker+xml生成docx 原理概述:word从2003版就支持xml格式 ...
- 【c#搬砖记】用Docx导出word格式的docx文件
DocX开源网址:http://docx.codeplex.com/ 1.引入DocX.dll 调用ReplaceText()方法替换模板中的字符.只支持docx格式的word文档 using (Do ...
- .net core 使用NPOI填充Word模板导出Word
最近工作用到在Word模板插入数据库数据,导出一个带数据的Word文件,想起来之前操作Word都是用微软提供的Microsoft.Office.Interop.Word,而在最新的..NET CORE ...
- c#.Net:Excel导入/导出之NPOI 2.0简介
NPOI 2.0+主要由SS, HPSF, DDF, HSSF, XWPF, XSSF, OpenXml4Net, OpenXmlFormats组成,具体列表如下: 资料来自:百度百科 Ass ...
- poi导出word文档,doc和docx
maven <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency> <gro ...
- FineReader Mac如何设置参数让导出为DOCX/RTF/ODT格式
Mac版ABBYY FineReader OCR文字识别软件识别文档之后,可以将已识别的文本保存到文件中,还可以通过电子邮件发送输出格式受FineReader支持的已识别文本,了解了ABBYY Fin ...
- NPOI导出word,以及对table的一些设置
参考网址:http://www.aiuxian.com/article/p-1970779.html NPOI版本:2.1.3.1 最终效果图: 代码: /// <summary> /// ...
随机推荐
- BZOJ 3224: Tyvj 1728 普通平衡树 vector
3224: Tyvj 1728 普通平衡树 Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除 ...
- js截取指定字节长度的字符串
默认的截取字符串都是根据字符长度或位置截取的,典型的两个方法是substr和substring. 这样导致的问题是截取同样长度的字符串时,多字节字符(汉字等)和单字节字符(半角英文字母.半角数字)占的 ...
- http://blog.csdn.net/wxwzy738/article/details/16968767
http://blog.csdn.net/wxwzy738/article/details/16968767
- 浅析C/C++ library
1 背景 原来跑的好好的进程,重启后没跑多少就挂掉了,奇怪了.经过跟踪,原来是加载了一个.so文件,于是决定学习一下library相关的东东,现在和大家分享一下. 2 分类 C/C++ library ...
- css属性
文本: color 颜色 line-height 行高 direction 文本方向 letter-spacing 字符间距 text-align 对齐方式 text-decoration 文本修饰 ...
- Ajax动态滚动加载数据
看新浪微博,人人网都有这样的效果:滚动条滚动到最下面的时候,新的数据就被自动加载出来了,今天亲自尝试了一下这个效果的实现. 最开始在CSDN上写了一版,功能比较简单,今天又增加了一个小功能:翻页到指定 ...
- MS WORD 表格自动调整列宽,自动变漂亮,根据内容自动调整 .
在MS WORD中,当有大量的表格出现时,调整每个表格的的高和宽和大小将是一件非常累的事情,拖来拖去,非常耗时间,而且当WORD文档达到300页以上时,调整反应非常的慢,每次拖拉线后,需要等待一段时间 ...
- USACO Section 2.4: The Tamworth Two
这题我是用蒙的方法来弄出最后的不能碰到的条件的(用1000试了下account跳出条件),结果竟然还过了,不过网上有精准的求出这个碰不到的条件,farm的状态为10*10*4 = 400,cow的状态 ...
- extern的意思
还是在重温C++,看到extern的意思,觉得很有必要记下来. extern是用来干什么的大家想必都是很明白的. 如果有个全局变量,或者其他文件的全局变量,要在本文件或函数中使用,可以通过extern ...
- Android 如何设置默认语言
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...