poi操作word文档文件操作

摘要:
2007 Microsoft Office system为Microsoft Office Excel 2007、Microsoft Office Word 2007和Microsoft Office PowerPoint 2007采用基于XML的文件格式,从而继续此传输。名为OfficeOpenXML格式的新文件格式解决了上述市场需求的问题,并改变了基于Microsoft Office文档构建解决方案的方式。POI是Apache的一个开源项目。您可以从Apache网站下载相应的jar包文件及其源文件。为了说明POI在提升Word文件时的方便性和简单性,通过提取Word文件的文本来理解POI API的功能。
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是Apache的一个开源项目,可以到Apache网站下载相应的jar包文件,及其源文件。

POI提供了提取一些非TXT文本中文本内容的API,比如提取Word,Excel等,使用起来非常方便。

为了说明POI提起Word文件的方便和简单,通过提取一个Word文件的文本来,来了解POI API的功能。

假设在本地磁盘中存在一个Word文件

E:POIwordJBoss3.0 下配置和部署EJB简介.doc文件是具有格式的,内容如图所示:


下面看看提取它的内容是多么简单。

首先从Apache网站上下载POI的相关jar包。

新建一个测试类:

package org.shirdrn.word; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 

import org.apache.poi.hwpf.extractor.WordExtractor; 

public class MyWordExtractor { 

public static void main(String[] args) { 
   File file = new File("E:\POI\word\JBoss3.0 下配置和部署EJB简介.doc"); 
   try { 
    FileInputStream fis = new FileInputStream(file); 
    WordExtractor wordExtractor = new WordExtractor(fis); 
    System.out.println("【 使用getText()方法提取的Word文件的内容如下所示:】"); 
    System.out.println(wordExtractor.getText()); 
   } catch (FileNotFoundException e) { 
    e.printStackTrace(); 
   } catch (IOException e) { 
   e.printStackTrace(); 
} 
} 
} 

提取Word文件的文本内容,打印到控制台上,如下所示:

使用WordExtractor类的getTextFromPieces()方法提取:

wordExtractor.getTextFromPieces();

结果和上面是一样的。

WordExtractor类还有一个可以提取Word文件的各个段落的方法getParagraphText(),返回一个String[]数组,数组中每个元素为一个段的文本内容。

这里,对Word文件中换行也看成是一个段,测试如下:

package org.shirdrn.word; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 

import org.apache.poi.hwpf.extractor.WordExtractor; 

public class MyWordExtractor { 

public static void main(String[] args) { 
   File file = new File("E:\POI\word\JBoss3.0 下配置和部署EJB简介.doc"); 
   try { 
    FileInputStream fis = new FileInputStream(file); 
    WordExtractor wordExtractor = new WordExtractor(fis); 
    System.out.println("【 使用getText()方法提取的Word文件的内容如下所示:】"); 
    String[] paragraph = wordExtractor.getParagraphText(); 
    System.out.println("该Word文件共有"+paragraph.length+"段。"); 
    for(int i=0;i<paragraph.length;i++){ 
     System.out.println("< 第 "+(i+1)+" 段的内容为 >"); 
     System.out.println(paragraph[i]); 
    } 
   } catch (FileNotFoundException e) { 
    e.printStackTrace(); 
   } catch (IOException e) { 
   e.printStackTrace(); 
} 
} 
} 

提取Word文件的文本内容,打印到控制台上,如下所示:

从上面的Word文件可以看出,最后一行是Word文件的一个换行符,使用WordExtractor提取时,也把它默认成为一个段,因为一个段结束后应该有一个回车换行符。

如果有多个Word文件,而且放在不同的目录下,要提取它们的文本内容,可以实现一个递归的函数,通过深度遍历,为每一个Word文件进行提取。

如果需要,可以将提取到的Word文件的文本内容输出到本地磁盘中,比如以txt记事本的根式保存。

从上面可以看出,提取Word文件的文本内容,实际上是将Word文件的格式去掉了,获取到文本的内容。

免责声明:文章转载自《poi操作word文档文件操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇重建win7桌面图标缓存Android内存分析工具下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Eclipse开发PHP环境配置

首先准备好软件: 1. Apache,到这里找个最新版本 2. PHP,到这里下载 3. Eclipse IDE for Java EE Developers,到这里下载 4. DLTK Core Frameworks 1.0 Integration build,到这里下载 注意:DLTK是所谓动态语言开发包,PDT依赖于它,不知为什么现在官方主页上的稳定...

CVE-2019-0232漏洞复现

CVE-2019-0232 1、漏洞简介 CVE-2019-0232漏洞是由于Tmocat CGI将命令行参数传递给Windows程序的方式存在错误,使得CHIServler被命令注入影响。 该漏洞只影响Windows平台,要求启用了CGIServlet和enableCmdLineArguments参数。但是CGIServlet和enableCmdLine...

Apache 负载均衡 端口转发 配置

转载自:https://blog.csdn.net/snihcel/article/details/38844323 [端口转发配置] 通过http_proxy做tomcat的端口转发: 描述:将远程服务器映射到本地服务器的URL空间 语法:ProxyPass [路径] !|url [键=值 键=值 ...]] [nocanon] 上下文: server...

CentOS如何查看端口是被哪个应用/进程占用

CentOS如何查看端口是被哪个应用/进程占用有时启动应用时会发现端口已经被占用,或者是感觉有些端口自己没有使用却发现是打开的。这时我们希望知道是哪个应用/进程在使用该端口。 CentOS下可以用netstat或者lsof查看,Windows下也可以用netstat查看,不过参数会不同 Linux: netstat -nap #会列出所有正在使用的端口及关...

Nutch 环境搭建及demo教程

目录: 环境搭建以及运行结果 Nutch教程译文 Nutch教程原文(如有侵权,通知后立即删除) 环境搭建ubuntu17.04 + jdk1.7 + Nutch 1.9 and Solr 4.10.1 参照 https://www.cs.upc.edu/~CAIM/lab/session4crawling.html 的版本说明 参照 https://wi...

java.net.UnknownHostException异常处理

1.问题描述   最近迁移环境,在Linux系统下部署Java产品的应用,后台报出如下异常,系统报找不到名为“xxx-houtai1”的主机: 1 java.net.UnknownHostException: xxx-houtai1: xxx-houtai1 2 at java.net.InetAddress.getLocalHost...