以前,我们学习了如何使用Apache poi中的wordExtractor读取Word的内容。使用WordExtractor读取文件时,只能读取文件的部分文本内容和基于文档的属性。不能读取文档内容的属性等。要阅读文档内容的属性,必须使用HWPFDocument进行阅读。

首先在主页上看一下关于HWPF的介绍。

Apache POI中的hwpf模块专为对word doc文件进行读写操作而设计。在Hwpf中,我们使用HWPFDocument来表示word doc文档。HWPFDocument有以下概念:

Range:表示整个文档、内部部分(Section)、段落(Paragraph)或具有共同属性的文本(CharacterRun)的范围。

节:word文档中的节,一个word文档可以包含多个节。

Paragraph:word文档中的一段。一段可以包含多个段落。

CharacterRun:具有相同特性的文本段落,一个段落可以由多个CharacterRun组成。

票:一张票。

TableRow:与表相对应的行。

TableCell:与表相对应的单元格。

节、Paragraph、CharacterRun和Table都继承自Range。

HWPFDocument现在是Word文档的代表,功能比WordExtractor更强。这使您可以读取文档中的表、列表等,还可以添加、修改和删除文档的内容。这些添加、修改和删除完成后,相关信息将存储在HWPFDocument中。也就是说,您更改了HWPFDocument,而不是磁盘上的文件。要使这些修改生效,可以调用HWPFDocument的write方法,将修改后的HWPFDocument输出到指定的输出流。这可以是原始文件的输出流,也可以是新文件的输出流(对应于“另存为”)或其他输出流。

在实际工作流程中,使用Apache poi通常会执行word读取任务和简单的内容装配和替换任务(例如替换模板内容等),而要执行更复杂的任务(例如更改样式、保存联机编辑等),通常会使用其他技术(例如Jacob)。换句话说,使用poi操作word是有限制的。实际使用可以使用其他技术或多种技术的组合。

要使用Poi,必须引入相关的jar。在这种情况下,使用的jar为。概括地说,使用poi操作excel和word的常用jar如下:

要读取的word文件为11.doc,内容如下:

范例程式码:

在此示例中,使用JUnit进行测试。Run as Junit测试的结果如下:

以上内容是使用poi的HWPFDocument读取word内容的方式。本示例操作03版本的word(即doc文件),使用的类位于HWPF包下,07版本的word(即docx文件)使用的类位于XWPF包下。这与操作excel的HSSF和XSSF类似。

相关推荐