POI 读取word (word 2003 和 word 2007)(转,好用)

转做的操作:

将作者文中失效的链接的正确链接放在失效链接的下面。

最近在给客户做系统的时候,用户提出需求,要能够导入 word 文件,现在 microsoft word 有好几个版本 97、2003、2007的,这三个版本存储数据的格式上都有相当大的差别,而现在 97 基本上已经退出市场,几乎没有人用这个版本了, 所以在我们的系统中只考虑 2003 版本和 2007 版本的,因为我们只要求能够读取 word 中的文字内容即可,其中的文字样式、图片等信息可以忽略,也不用直接操作 word 文件, 所以我们选择 用 apache 的 POI 进行读取。

读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi-3.5-beta6-20090622.jar 和 poi-scratchpad-3.5-beta6-20090622.jar 两个 jar 包即可, 而 2007 版本(.docx)就麻烦多,我说的这个麻烦不是我们写代码的时候麻烦,是要导入的 jar 包比较的多,有如下 7 个之多:
 1. openxml4j-bin-beta.jar
 2. poi-3.5-beta6-20090622.jar
 3. poi-ooxml-3.5-beta6-20090622.jar
 4 .dom4j-1.6.1.jar
 5. geronimo-stax-api_1.0_spec-1.0.jar
 6. ooxml-schemas-1.0.jar
 7. xmlbeans-2.3.0.jar
其中 4-7 是 poi-ooxml-3.5-beta6-20090622.jar 所依赖的 jar 包(在 poi-bin-3.5-beta6-20090622.tar.gz 中的 ooxml-lib 目录下可以找到)。

编写代码之前我们得先下载所需要的 jar 包, 我们只需下载 poi-bin-3.5-beta6-20090622.tar.gz 和 openxml4j-bin-beta.jar 即可,因为所需要的其他 jar 包都能在 poi-bin-3.5-beta6-20090622.tar.gz 中找到, 下面是下载地址:
poi-bin-3.5-beta6-20090622.tar.gz:http://apache.etoak.com/poi/dev/bin/poi-bin-3.5-beta6-20090622.tar.gz
openxml4j-bin-beta.jar:http://mirror.optus.net/sourceforge/o/op/openxml4j/openxml4j-bin-beta.jar
官网的下载链接更新了:
http://archive.apache.org/dist/poi/release/bin/poi-bin-3.5-FINAL-20090928.tar.gz
http://sourceforge.net/projects/openxml4j/files/OpenXML4J%20Library/Beta/

下方是读取 word 文件的 Java 代码,值得注意的是: POI 在读取 word 文件的时候不会读取 word 文件中的图片信息, 还有就是对于 2007 版的 word(.docx), 如果 word 文件中有表格,所有表格中的数据都会在读取出来的字符串的最后。

 import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream; import org.apache.poi.POIXMLDocument;
import org.apache.poi.POIXMLTextExtractor;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor; /**
* POI 读取 word 2003 和 word 2007 中文字内容的测试类<br />
* @createDate 2009-07-25
* @author Carl He
*/
public class Test {
public static void main(String[] args) {
try {
//word 2003: 图片不会被读取
InputStream is = new FileInputStream(new File("c://files//2003.doc"));
WordExtractor ex = new WordExtractor(is);
String text2003 = ex.getText();
System.out.println(text2003); //word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后
OPCPackage opcPackage = POIXMLDocument.openPackage("c://files//2007.docx");
POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
String text2007 = extractor.getText();
System.out.println(text2007); } catch (Exception e) {
e.printStackTrace();
}
}
}

如果想下载完整的示例代码,可以到这里下载,这个 rar 包中有 POI 读取word 2003 和 word 2007 所需要的全部 jar 包 和 word 2003、word 2007 示例文件。

另一个地址下载的 http://download.csdn.net/download/shaorui0612/8404227

转自:

POI 读取word (word 2003 和 word 2007) - CSDN博客
http://blog.csdn.net/hemingwang0902/article/details/4381598

最新文章

  1. css确定元素水平居中和垂直居中
  2. 新一代编程:scala泛函编程技术-唠叨
  3. org.hibernate.QueryException: could not resolve property
  4. C++ 使用SQLite
  5. Java浮点值拒绝服务漏洞危害分析
  6. Sublime Text修改显示图标
  7. 转储指定的数据块并查看TRC信息
  8. C#遍历FTP文件夹/下载
  9. jquery复选框操作
  10. 一.初识java
  11. “百度杯”CTF比赛 九月场_SQL
  12. Css中的盒子结构padding和margin的区别
  13. Redis介绍使用及进阶
  14. File类中的一些属性 添加删除文件夹
  15. latex如何定义宏,插图统一尺寸减少工作量
  16. 数以亿计运行PHP的网站即将面临严重的安全风险
  17. MPU6050带字符驱动的i2c从设备驱动1
  18. 如何将他人的SOPC工程转换为自己可以使用的工程
  19. Architecture
  20. Hibernate中对象的三种状态及相互转化

热门文章

  1. form表单中只有一个input时,按回车键后表单自动提交(form表单的一个小坑)
  2. SIGFPE能处理上下溢吗?
  3. Iframe用法精析
  4. 前k大金币(动态规划,递推)
  5. java基础学习日志---File方法分析
  6. 字符串匹配「 KMP 算法 」
  7. highcharts图表的常见操作
  8. software collection
  9. (一)U-Boot启动过程--详细版的完全分析
  10. 【03】json使用