`
haofenglemon
  • 浏览: 245689 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用poi操作word文档

阅读更多
关键字:POI JAVA 批注 总页数 总字符数
一:认识POI
Apache POI是一个开源的利用Java读写Excel、WORD等微软OLE2组件文档的项目。最新的3.5版本有很多改进,加入了对采用OOXML格式的Office 2007支持,如xlsx、docx、pptx文档。
POI主页:poi.apache.org/

二:POI3.5相关下载
                3.5Jar包下载地址
                3.5源码下载地址

三:POI组成部分概览
以下是POI的几个重要组成部分,以及各组件的功能概述。

POIFS
POIFS是该项目的最古老,最稳定的一部分。.这是格式化OLE 2复合文档为纯Java的接口。 它同时支持读写功能。所有的组件,最终都依赖于它的定义
HSSF 和 XSSF
HSSF: MS-Excel 97-2003(.xls),基于BIFF8格式的JAVA接口。
XSSF:MS-Excel 2007+(.xlsx),基于OOXML格式的JAVA接口。
HWPF 和XWPF
HWPF: MS-Word 97-2003(.doc),基于BIFF8格式的JAVA接口。只支持.doc文件简单的操作,读写能力有限。本API为POI项目早期开发,很不幸的 是主要负责HWPF模块开发的工程师-“Ryan Ackley”已经离开Apache组织,现在该模块没有人维护、更新、完善。
XWPF:MS-Word 2007+(.docx),基于OOXML格式的JAVA接口。较HWPF功能完善。

四:利用POI提取Word文本内容及批注
97-2003:

import org.apache.poi.POITextExtractor;
import org.apache.poi.hwpf.extractor.WordExtractor;
//得到.doc文件提取器
org.apache.poi.hwpf.extractor.WordExtractor doc = new WordExtractor(new FileInputStream(filePath));
//提取.doc正文文本
String text = doc.getText();
//提取.doc批注
String[] comments = doc. getCommentsText();

2007

import org.apache.poi.POITextExtractor;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFComment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
//得到.docx文件提取器
org.apache.poi.xwpf.extractor.XWPFWordExtractor docx = new XWPFWordExtractor(POIXMLDocument.openPackage(filePath));
//提取.docx正文文本
String text = docx.getText();
//提取.docx批注
org.apache.poi.xwpf.usermodel.XWPFComment[] comments = docx.getDocument()).getComments();
for(XWPFComment comment:comments){
comment.getId();//提取批注Id
comment.getAuthor();//提取批注修改人
comment.getText();//提取批注内容
}
五:利用POI提取Word总页数、总字符数...
97-2003
WordExtractor doc = new WordExtractor(new FileInputStream(filePath));//.doc格式Word文件提取器
int pages = doc.getSummaryInformation().getPageCount();//总页数
int wordCount = doc.getSummaryInformation().getWordCount();//总字符数
2007:

XWPFDocument docx = nnew XWPFDocument(POIXMLDocument.openPackage(filePath));

int pages = docx.getProperties().getExtendedProperties().getUnderlyingProperties().getPages();//总页数
int characters = docx.getProperties().getExtendedProperties().getUnderlyingProperties().getCharacters();// 忽略空格的总字符数 另外还有getCharactersWithSpaces()方法获取带空格的总字数。


小技巧:
2007采用了全新的OFFICE OPEN XML格式来存储,跟以前二进制文件格式的office 97-2003(.doc、.xls...)不同,所以可以直接重命名xx.docx的文件为xx.zip,用WinRar打开可以看到office2007的存储文件,其中word/document.xml里面保存了最重要的正文内容,word/comments.xml保存的是批注内容,可以多研究一下这些文件,有助于开发~

Office Open XML 文件格式简介  www.microsoft.com/china/msdn/library/office/office/OfficeOpenXMLFormats.mspx
随着20世纪90年代XML的出现,企业计算客户开始逐渐认识到,在他们所依赖的计算机产品和应用中采用开放的格式和标准所带来的商业价值。IT专业人员将从通用的数据格式中受益匪浅,这种格式可能是XML,因为它拥有被应用程序、平台和Internet浏览器读取的能力。

同样,随着在Microsoft Office 2000中对于XML格式的支持与采用,开发人员开始认识到,他们需要将以前的Microsoft Office版本中的二进制文件格式转换为XML格式。二进制文件(.doc,.dot,.xls,以及.ppt文件)在过去几年中一直肩负着存储和转换数据的重任,而现在它们无法满足新的市场需求的挑战,其中包括轻松地在异构应用之间传递数据,以及允许用户从这些数据中搜集商业信息。

2007 Microsoft Office system为Microsoft Office Excel 2007,Microsoft Office Word 2007,和Microsoft Office PowerPoint 2007采用了基于XML的文件格式,从而延续了这种转移。新的文件格式,称为Office Open XML格式,解决了上述市场需求的问题,同时改变了您基于Microsoft Office文档建立解决方案的方式

分享到:
评论
3 楼 问道721 2014-11-27  
长见识了, 新建文档还不行, 写入内容后就可以了
2 楼 lqservlet 2013-09-06  
可以看到存储文件!  全是xml文件,好多呀。
1 楼 步青龙 2013-01-17  
直接重命名xx.docx的文件为xx.zip,用WinRar打开可以看到office2007的存储文件 你好,我试了试怎么不行啊?需要什么配置吗?谢谢

相关推荐

    poi操作word文档

    ### 使用POI操作Word文档详解 #### 一、概述 Apache POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Word、Excel 和 PowerPoint。对于 Word 文档(.docx),Apache POI 提供了 XWPF 模块来...

    java 利用POI读取Word文件中的内容

    在提供的压缩包文件中,StreamDemo_17.java可能是实现上述操作的一个示例代码,而Java.jpg可能是一个示例图片,用于展示如何处理Word文档中的图片。通过学习和理解这个例子,你可以更好地掌握使用Apache POI读取Word...

    Java POI 生成Word文档

    ### Java POI 生成Word文档的关键技术点 #### 一、概述 Java POI 是一个用于读写 Microsoft Office 格式文件(如 .docx、.xlsx 等)的开源库,它允许开发者通过 Java 程序来创建、编辑和显示 Office 文件。本文将...

    利用poi+word模版书签,向word中插入数据

    你可以参考这些源码进一步学习和实践如何利用POI和Word模板进行数据插入。 总结起来,利用Apache POI的XWPF模块和Word模板中的书签,可以高效地生成批量定制的Word文档,这对于企业报告、合同生成等场景具有很高的...

    android中poi生成word文档和excel文档

    XML可以更方便地进行数据操作和格式化,然后利用POI将其转换为用户友好的文档。 4. **文件操作**:在Android中,由于安全性和权限管理的限制,通常不会直接在内部存储或外部存储上操作文件,而是使用`AssetManager`...

    利用Java Apache POI 生成Word文档示例代码

    "利用Java Apache POI 生成Word文档示例代码" 本篇文章主要介绍了利用Java Apache POI 生成Word文档示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 首先,Apache POI是一个开源的Java库,由Apache...

    利用POI将word转换成html实现在线阅读

    本主题聚焦于如何利用Apache POI库将Word文档转换为HTML格式,从而实现在线阅读。Apache POI是一个强大的开源Java库,它允许开发者读取、写入以及创建Microsoft Office格式的文件,包括Word(.doc)文档。 首先,让...

    java利用poi生成word

    在这个场景中,"java利用poi生成word"指的是使用Apache POI库来编程生成Word文档。Apache POI提供了一个API,允许开发者通过Java代码操作Word文档的各个部分,如文本、图片、表格等。 首先,让我们深入了解一下...

    android使用POI操作word docx文档

    在Android平台上,使用Apache POI库来操作Microsoft Office的Word(docx)文档是一项常见的需求。Apache POI是一个开源项目,主要设计用于处理Microsoft的文件格式,如.docx、.xlsx和.pptx等。本篇文章将深入探讨...

    Java利用poi对word插入文字图片

    本项目“Java利用poi对word插入文字图片”是一个具体的示例,旨在教给你如何使用Apache POI API在Word文档中插入文字和图片。下面将详细阐述相关的知识点。 首先,Apache POI提供了HWPF(Horrible Word Processor ...

    POI操作Word中插入文本和图片

    Apache POI提供了一套完整的API,使得在Java中操作Word文档变得简单。无论是插入文本还是图片,都可以灵活控制内容和样式。利用这些功能,你可以构建出复杂的动态报告模板,满足各种业务需求。在实际开发中,还可以...

    Java使用POI导出Word文档

    此外,你还可以利用POI提供的API来设置复杂的样式,如边框、填充、对齐方式、列表样式等。 总之,使用Apache POI库,Java开发者可以轻松地创建和编辑Word文档,实现数据的自动化导出,提高工作效率。只要理解了基本...

    使用java Apache poi 根据word模板生成word报表例子

    使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持。 使用说明:https://blog.csdn.net/u012775558/article/details/79678701

    JAVA利用poi完成word转pdf,内容包括两个现成工具类和使用到的所有jar包

    首先,Apache POI提供了读取和写入Word文档的能力,但其本身并不支持直接将Word转换为PDF。为了完成这个任务,我们可以借助于其他的库,例如iText或Apache PDFBox,它们专门用于处理PDF文档。在这个特定的案例中,...

    android使用POI操作替换word docx文档中指定内容

    在这个场景中,我们关注的是如何利用POI在Android环境中替换Word文档(.docx)中的特定内容。下面将详细介绍这个过程以及相关的技术要点。 首先,理解Apache POI库。Apache POI是Java的一个开源项目,它提供了一套...

    java--Poi 生成word文档

    在这个“java--Poi 生成word文档”的示例中,我们将深入探讨如何利用POI库来生成Word文档。Apache POI提供了一组API,允许Java开发者在程序中操作Word的DOCX格式,这是一种基于XML的现代版本。 首先,让我们理解...

    POI-TL合并多个Word文档

    而对于Word文档,POI使用了XWPF(XML Word Processing Format)类来操作.docx文件。而POI-TL(Template Literal)则进一步简化了这一过程,提供了一种模板化的编程方式,使得在Java中生成和编辑复杂Word文档变得更加...

    poi合并多个word文档并设置页码

    在"poi合并多个word文档并设置页码"这个主题中,我们将深入探讨如何利用POI API来实现这两个功能。 首先,让我们讨论如何合并多个Word文档。Apache POI提供了一个名为`XWPFDocument`的类,它代表一个Open XML格式的...

    java poi把word文档转化为html,支持doc。

    在这个特定的场景中,我们利用POI将Word文档转换为HTML格式,以便于在网页上展示或者进行其他Web相关的操作。下面我们将深入探讨这个过程中的关键知识点。 1. **Java POI库**: POI是Apache软件基金会的一个开源项目...

    POI使用word模板文件循环输出行并导出word

    在这个例子中,我们将探讨如何使用POI库来处理Word文档,特别是利用模板文件循环输出表格行并导出新的Word文档。这个过程在数据分析、报告生成或自动化文档制作等场景中非常有用。 首先,我们需要理解Word文档的...

Global site tag (gtag.js) - Google Analytics