1 什么是Apache POI
2 Apache POI的组件
3 安装Apache POI
4 使用POI操作Word文档
1 什么是Apache POI
全称Apache POI,使用Java编写的免费开源的跨平台的Java API。 是创建和维护操作各种符合 Office Open XML(OOXML)标准和微软的 OLE 2 复合文档格式(OLE2)的 Java API。用它可以使用 Java 读取和创建, 修改 MS Excel 文件. 而且, 还可以使用 Java 读取和创建 MS Word 和 MSPowerPoint 文件。Apache POI 提供 Java 操作 Excel 解决方案(适用于 Excel97-2008)。
2 Apache POI的组件
Apache POI包含用于MS-Office的所有OLE2复合文档的类和方法。 此API的组件列表如下:
POIFS:此组件是所有其他POI元素的基本因素。 它用于显式读取不同的文件。
HSSF:用于读取和写入.xls格式的MS-Excel文件。
XSSF(XML SpreadSheet格式):用于MS-Excel的.xlsx文件格式。
HPSF:用于提取MS-Office文件的属性集。
HWPF:用于读取和写入MS-Word的.doc扩展文件。
XWPF(XML字处理器格式):用于读取和写入MS-Word的扩展文件 .docx 。
HSLF:用于阅读,创建和编辑PowerPoint演示文稿。
HDGF(Horrible DiaGram格式):它包含MS-Visio二进制文件的类和方法。
HPBF(Horrible PuBlisher格式):用于读取和写入MS-Publisher文件。
3 安装Apache POI
使用Maven依赖的方式,主要是下面三个依赖。
操作docx文档需要的jar包有6个:dom4j.jar,poi-ooxml-3.10-FINA.jar,poi-ooxml-schemas-3.10-FINA.jar,xmlbean-2.3.0.jar,commons-lang.jar以及ooxml-schemas-1.1.jar
操作doc文档需要的jar包有poi-3.10-FINAL.jar,poi-scratchpad-3.10-FINA.jar其中操作doc文档对模板的依赖很大,功能相对操作docx的接口很弱。
org.apache.poi
poi
3.17
org.apache.poi
poi-ooxml
3.17
org.apache.poi
ooxml-schemas
1.1
4 使用POI操作Word文档
主要是使用POI操作Word文档,主要是写入文档操作的讲解:将网页中的数据导出,自动生成指定格式的Word文档。
4.1 效果展示
(1)在网站中选择需要导出的新闻,生成Word
image.png
(2)生成的Word展示
目录页
内容详情页
从上面可以看出,导出的文档含有:
有指定格式的标题、时间、编著者等信息;
会自动生成目录;
有内容详情页;
4.2 功能实现介绍
4.2.1 前提知识:
官方文档中主要包括Java操作Office文档的常用类,里面封装了常用的:读、写、设置格式等方法。
例如:操作Word07之后的版本主要是使用XWPFDocument这个对象。
image.png
(2)另外,当现有的功能不能满足要求,你需要对现有功能进行重写时。有一个很重要的东西就是ooxml。简单的说,这个就是微软公布的一套使用XML操作Word的开放的标准。详情见下面网址:
http://www.datypic.com/sc/ooxml/s-wml.xsd.html
4.2.2 功能实现说明
(1)功能的整体UML图如下:
image.png
(2)生成单文档
基本的格式设置、写入数据等生成单文档的功能都不难,耐心的对照这官方API去看,基本就可以实现。
下面贴一个生成单文档的例子:
效果:
image.png
代码如下:基本的注释都有,自己跑一下就懂了
public void write2Docx()throws Exception{
XWPFDocument document= new XWPFDocument();
//Write the Document in file system
FileOutputStream out = new FileOutputStream(new File("G:\\Offer\\create_table.docx"));
//添加标题
XWPFParagraph titleParagraph = document.createParagraph();
//设置段落居中
titleParagraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun titleParagraphRun = titleParagraph.createRun();
titleParagraphRun.setText("Java PoI");
titleParagraphRun.setColor("000000");
titleParagraphRun.setFontSize(20);
//段落
XWPFParagraph firstParagraph = document.createParagraph();
XWPFRun run = firstParagraph.createRun();
run.setText("Java POI 生成word文件。");
run.setColor("696969");
run.setFontSize(16);
//设置段落背景颜色
CTShd cTShd = run.getCTR().addNewRPr().addNewShd();
cTShd.setVal(STShd.CLEAR);
cTShd.setFill("97FFFF");
//换行
XWPFParagraph paragraph1 = document.createParagraph();
XWPFRun paragraphRun1 = paragraph1.createRun();
paragraphRun1.setText("\r");