java生成word目录_Apache POI自动生成Word文档(带目录)

本文介绍了使用Apache POI库在Java中创建和操作Word文档,特别是如何生成带有目录的Word文档。Apache POI是Java API,用于读写MS Office格式的文件,包括Excel和Word。文章详细讲述了Apache POI的组件,安装方法,以及如何使用POI创建Word文档,尤其是如何设置标题、生成目录和处理页码。示例代码展示了如何创建表格、设置段落格式以及自定义目录样式。最后,作者提出了在自动更新页码方面的挑战,并请求社区的帮助。
摘要由CSDN通过智能技术生成

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

0a32d8bd6878

image.png

(2)生成的Word展示

0a32d8bd6878

目录页

0a32d8bd6878

内容详情页

从上面可以看出,导出的文档含有:

有指定格式的标题、时间、编著者等信息;

会自动生成目录;

有内容详情页;

4.2 功能实现介绍

4.2.1 前提知识:

官方文档中主要包括Java操作Office文档的常用类,里面封装了常用的:读、写、设置格式等方法。

例如:操作Word07之后的版本主要是使用XWPFDocument这个对象。

0a32d8bd6878

image.png

(2)另外,当现有的功能不能满足要求,你需要对现有功能进行重写时。有一个很重要的东西就是ooxml。简单的说,这个就是微软公布的一套使用XML操作Word的开放的标准。详情见下面网址:

http://www.datypic.com/sc/ooxml/s-wml.xsd.html

4.2.2 功能实现说明

(1)功能的整体UML图如下:

0a32d8bd6878

image.png

(2)生成单文档

基本的格式设置、写入数据等生成单文档的功能都不难,耐心的对照这官方API去看,基本就可以实现。

下面贴一个生成单文档的例子:

效果:

0a32d8bd6878

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");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值