zoukankan      html  css  js  c++  java
  • POI 读取word (word 2003 和 word 2007)(转)

    POI 读取word (word 2003 和 word 2007)(转)

    这是作者2009年写的,年份有点久了,那个版本的poi不好下,文中链接也失效了,不过作者评论区有链接,可以找到测试的下载地址。

    转自:

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

    最近在给客户做系统的时候,用户提出需求,要能够导入 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
     
        下方是读取 word 文件的 Java 代码,值得注意的是: POI 在读取 word 文件的时候不会读取 word 文件中的图片信息, 还有就是对于 2007 版的 word(.docx), 如果 word 文件中有表格,所有表格中的数据都会在读取出来的字符串的最后。

     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 中文字内容的测试类<br />
    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 示例文件。

  • 相关阅读:
    mysql 远程登陆不上
    hdu 5339 Untitled【搜索】
    SqlServer 书目
    passwordauthentication yes
    oracle 11g RAC ocfs2
    Oracle 11g RAC database on ASM, ACFS or OCFS2
    CentOS ips bonding
    Oracle 11g RAC features
    openStack 王者归来之 trivial matters
    openstack windows 2008 img
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7601790.html
Copyright © 2011-2022 走看看