最近在给客户做系统的时候,⽤户提出需求,要能够导⼊ 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 ⽬录下可以找到)。 [java]
1. import java.io.File;
2. import java.io.FileInputStream; 3. import java.io.InputStream; 4.
5. import org.apache.poi.POIXMLDocument; 6. import org.apache.poi.POIXMLTextExtractor;
7. import org.apache.poi.hwpf.extractor.WordExtractor; 8. import org.apache.poi.openxml4j.opc.OPCPackage;
9. import org.apache.poi.xwpf.extractor.XWPFWordExtractor; 10. 11. /**
12. * POI 读取 word 2003 和 word 2007 中⽂字内容的测试类
13. * @createDate 2009-07-25 14. * @author Carl He 15. */
16. public class Test {
17. public static void main(String[] args) { 18. try {
19. //word 2003: 图⽚不会被读取
20. InputStream is = new FileInputStream(new File(\"c://files//2003.doc\")); 21. WordExtractor ex = new WordExtractor(is); 22. String text2003 = ex.getText(); 23. System.out.println(text2003); 24.
25. //word 2007 图⽚不会被读取, 表格中的数据会被放在字符串的最后
26. OPCPackage opcPackage = POIXMLDocument.openPackage(\"c://files//2007.docx\"); 27. POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage); 28. String text2007 = extractor.getText(); 29. System.out.println(text2007); 30.
31. } catch (Exception e) { 32. e.printStackTrace(); 33. } 34. } 35. }
如果想下载完整的⽰例代码,可以,这个 rar 包中有 POI 读取word 2003 和 word 2007 所需要的全部 jar 包 和 word 2003、word 2007 ⽰例⽂件。
因篇幅问题不能全部显示,请点此查看更多更全内容