关键字: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文档建立解决方案的方式

poi处理word内容的公式_利用poi操作word文档相关推荐

  1. poi处理word内容的公式_[简单]POI读取word 2007内容控件

    见代码 : import java.util.Iterator; import java.util.List; import org.apache.poi.openxml4j.opc.OPCPacka ...

  2. python搜索pdf内容所在页码_利用Python在pdf文档中寻找某些词出现的页码

    要研究pdf文件的页码,首先要考虑这个文件的种类.pdf可能是一本书的电子版,可能是一份简历.可能是由Word.PPT或其他文档导出的--如果不是一本书,通常页面内容里是没有页码的:如果是一本书,虽然 ...

  3. 编辑器未包含main类型_利用 ONLYOFFICE 将在线文档编辑器集成到 Python Web 应用程序中...

    通过 API,开发人员可以将 ONLYOFFICE 编辑器集成到网站和利用程序设计语言编写的应用程序中,并能配置和管理编辑器. 来源:https://linux.cn/article-13037-1. ...

  4. poi处理word内容的公式_Java 使用 POI 操作 XWPFDocument 中的 XWPFParagraph(段落)对象的属性略解 Wor - 链滴...

    我用的是office word 2016版 创建文本对象 XWPFDocument docxDocument = new XWPFDocument(); 创建段落对象 XWPFParagraph pa ...

  5. python处理word或者pdf文件_利用python程序生成word和PDF文档的方法

    一.程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用fr ...

  6. Python办公自动化实战 05 | Python-docx库:Python与Word的完美结合_ 利用代码实现Word中插入图片

    一.专题内容简介 本专题主要介绍Python针对Word办公自动化如何利用Python代码动态向Word中插入图片.​并且对格式做简单设定. 二.专题案例效果 最终运行效果如下: 三.专题代码实现 3 ...

  7. python读取word中的文字格式_利用Python-docx 读写 Word 文档中的正文、表格、段落、字体等...

    前言: 前两篇博客介绍了 Python 的 docx 模块对 Word 文档的写操作,这篇博客将介绍如何用 docx 模块读取已有 Word 文档中的信息. 本篇博客主要内容有: 1.获取文档的章节信 ...

  8. python操作word文件_利用PYTHON操作WORD文档

    office 2007 中不能直接打开 VB 编辑器,请按 Alt + F11 打开. import win32com.client # 导入脚本模块 WordApp = win32com.clien ...

  9. 利用python读取txt文档的方法_利用Python读取txt文档的方法讲解

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. 馅饼还是陷阱,TMG2010升级经验谈
  2. 以下哪一个不属于python语言的特点-Python语言的特点有哪些
  3. 23 DesignPatterns学习笔记:C++语言实现 --- 2.2 Adapter
  4. 记录”limxml2剖析:功能特性”之摘抄
  5. 或许每条喵咪上辈子都是陨落的码农
  6. 异常处理、socke基于TCP协议编程
  7. 苦逼的是怎么又有东西没记住,但我们依然每天坚持一遍、一遍又一遍指导记住为止。
  8. 【华为云技术分享】【测试微课堂】DevOps敏捷测试之道
  9. ES6新特性之 promise
  10. php js 终止,使用Server-Sent Events(和Javascript / PHP)的连接会立即停止
  11. 赤峰中考计算机考试软件,2017年内蒙古赤峰中考信息技术操作考试实施细则
  12. 3dmax2016软件一打开文件就程序错误的原因及解决方法
  13. 南充十中高考2021成绩查询,2021年南充十中招办电话是多少?
  14. 微信创建公众号,获取AppID、AppSecret以及accesstoken
  15. Hadoop in action 第45678章
  16. 中国象棋局面识别 -2.象棋棋子的识别
  17. 笔记本电脑没有WiFi选项,3个小时,我试了以下N种方法,终于出现网络了!
  18. The Shawshank Redemption-10
  19. 山东师范大学计算机考研资料汇总
  20. linux实现动态域名解析DDNS

热门文章

  1. 在Windows下安装苹果系统内含Xcode5.1.1(大学课程《iphone应用开发》))
  2. html中注册商标r怎么打,如何在PPT里打一个圈加一个R,就是已经注册的标志?
  3. 七牛---借助第三方平台实现移动直播
  4. 直播带货平台搭建需要用到哪些第三方(下)
  5. DAEMON Tools Ultra 虚拟光驱 5.9.0.1527 所有你需要模擬的映像制作软件\虚拟驱动器
  6. [风控] 评分卡分箱WOE,IV出现正无穷、负无穷解决方法
  7. 计算机作业ppt怎么做,《苏腾计算机作业》PPT课件.ppt
  8. Java基础 - 标识符
  9. 如何在PC桌面上添加便笺
  10. input-file 部分手机不能拍照问题