您的位置 首页 java

java使用poi读取word内容(二)

之前研究了通过使用Apache poi的WordExtractor来读取word的内容,在使用WordExtractor读文件时我们只能读到文件的文本内容和基于文档的一些属性,至于文档内容的属性等是无法读到的。如果要读到文档内容的属性则需要使用HWPFDocument来读取了。

先看一下官网关于HWPF的介绍:

Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的。在hwpf里面我们使用 HWPFDocument 来表示一个word doc文档。在HWPFDocument里面有这么几个概念:

Range :它表示一个范围,这个范围可以是整个文档,也可以是里面的某一小节(Section),也可以是某一个段落( Paragraph ),还可以是拥有共同属性的一段文本(CharacterRun)。

Section :word文档的一个小节,一个word文档可以由多个小节构成。

Paragraph :word文档的一个段落,一个小节可以由多个段落构成。

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

Table :一个表格。

TableRow :表格对应的行。

TableCell :表格对应的单元格。

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

HWPFDocument是当前Word文档的代表,它的功能比WordExtractor要强。通过它我们可以读取文档中的表格、列表等,还可以对文档的内容进行新增、修改和删除操作。只是在进行完这些新增、修改和删除后相关信息是保存在HWPFDocument中的,也就是说我们改变的是HWPFDocument,而不是磁盘上的文件。如果要使这些修改生效的话,我们可以调用HWPFDocument的write方法把修改后的HWPFDocument输出到指定的输出流中。这可以是原文件的输出流,也可以是新文件的输出流(相当于另存为)或其它输出流。

在实际的操作过程中,我们使用Apache poi 一般是完成对word的读取工作以及简单的内容组装和替换工作(比如替换模板中的内容等),而如果要对word进行更加复杂的操作,比如改变样式,在线编辑保存等,一般是使用其他技术,比如jacob。就是说使用poi操作word有一定的局限性,实际的使用可能是使用其他的技术或者是几种技术结合使用的。

使用poi需要引入相关的jar,本例使用的jar有:poi-3.10-FINAL-20140208.jar、poi-scratchpad-3.10-FINAL-20140208.jar。总之,使用poi操作excel和word常用的jar有:

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

示例代码:

本例使用junit进行测试,Run as Junit Test,结果为:

以上即为使用poi的HWPFDocument读取word内容的方式。值得一提的是,本例操作的是03版的word,即 doc文件 ,使用的类位于HWPF包下,而操作07版word,即 docx 文件使用的类位于XWPF包下,这和操作excel的HSSF和XSSF相似。

文章来源:智云一二三科技

文章标题:java使用poi读取word内容(二)

文章地址:https://www.zhihuclub.com/184531.shtml

关于作者: 智云科技

热门文章

网站地图