`
houzhaowei
  • 浏览: 499173 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java 解析word(2003/2007)

阅读更多

现在 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 文件中有表格,所有表格中的数据都会在读取出来的字符串的最后。

view plaincopy to clipboardprint?
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();   
        }   
    }   
} 
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();
        }
    }
}

 发现了新的、细化的、完美的 解决方案 --- Apache Tika  详见:http://eric-hou.iteye.com/blog/737629 

分享到:
评论
1 楼 xubbsun 2013-12-19  
请问一下您这里是如何通过程序生成word2007文件,还是获取word2007文件路径

相关推荐

    java实现xml解析word文档代码实现

    Java 实现 XML 解析 Word 文档代码实现 基于给定的文件信息,我们可以总结出以下知识点: 1. Java 实现 XML 解析 Word 文档 Java 可以使用多种方式来解析 Word 文档,包括使用 Apache POI 库、Java2Word 库等。...

    java解析word2007相关包

    总之,Java解析Word2007文档涉及的主要知识点是使用Apache POI库,尤其是其XWPF模块,通过理解Open XML结构和使用相应的API来实现读取、写入和操作Word文档的功能。在实际应用中,还需要结合其他库和最佳实践来提高...

    java解析word文件的相关代码

    ### Java解析Word文件的关键知识点 #### 一、POI库介绍 - **定义与来源**:POI是Apache软件基金会的Jakarta项目中的一个子项目,它提供了一组API,用于处理Microsoft Office格式的文件(如Word、Excel)。POI支持...

    POI读取 word 2003 和 word 2007 的例子

    这是一个POI读取word 2003 和 word 2007的例子 是一个Eclipse工程 下载后直接导入工程 运行 src 目录下的 Test java 类即可 这个 rar 包中包含着 POI 读取word 2003 和 word 2007 所需要的 jar 包 也有需要读取的 ...

    JAVA_Poi.rar_Java 解析WORD_POI word_java pio_pressureulb_word解析

    标题中的"Java 解析WORD_POI word_java pio_pressureulb_word解析"指出了主要的技术点:使用Java的Apache POI库解析Word文档。Apache POI提供了一个名为HWPF(Horrible Word Processor Format)的API用于处理旧版的....

    poi 解析 office excel 2003,2007 word 2003,2007 的示例

    本示例将详细介绍如何使用Apache POI解析Office Excel 2003和2007,以及Word 2003和2007的文件。 首先,我们来看Excel的解析。Excel 2003使用的是.BOOK文件格式(HSSFWorkbook),而2007及以上版本使用的是.XLSX...

    POI解析word2007文本及图片(已测试).doc

    Apache POI 解析 Word 2007 文本及图片 Apache POI (Poor Obfuscation Implementation) 是一个 Java 库,用于读取和写入 Microsoft Office 文件,包括 Word、Excel、PowerPoint 等。 Apache POI 提供了对 Word ...

    Java读取Word表格内容

    通过Java读取word表格中的内容,将内容存到数据库中,将Word中的图片存到硬盘中

    poi资源包,java 解析Word,Excel的jar包

    在使用Apache POI时,你需要先在项目中引入对应的jar包,这正是“java 解析Word,Excel的jar包”的描述所指。你可以通过Maven或Gradle等构建工具将Apache POI库添加为项目的依赖,或者直接将压缩包解压后的jar文件...

    poi解析导入word (简单Demo使用)

    Apache POI是一个流行的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在"poi解析导入word (简单Demo使用)"这个主题中,我们将深入探讨如何使用Apache POI库来读取、修改和创建Word...

    java XML解析方式实现自动生成word文档

    本篇文章将详细探讨如何利用Java和XML解析来自动化创建Word文档。 首先,我们需要了解XML的结构。XML(Extensible Markup Language)是一种标记语言,它允许我们以结构化的方式存储数据。在生成Word文档时,我们...

    Java读取word文档内容并输出成网页(含图片,公式)

    Java POI库是Apache软件基金会开发的一个开源项目,专门用于处理Microsoft Office格式的文件,包括Word、Excel和PowerPoint等。在这个场景中,我们将重点讨论如何使用Java POI读取Word文档并将其内容转换为HTML网页...

    poi解析word文档 及 试卷数学公式导入wmf图片转成png图片

    标题中的“poi解析word文档”指的是使用Apache POI库来处理Microsoft Word(.doc或.docx)文件。Apache POI是Java中一个流行的库,它允许开发者读取、写入和修改Microsoft Office格式的文件,包括Word、Excel和...

    java解析读取excel,word,txt,xml,json等jar包

    支持excel2003,2007的解析读取,可指定sheet页读取,指定行开始读取,过滤空行,指定列读取,过滤空单元格,支持json文件的解析读取,支持word文件的解析读取,txt文件等等,需要API文档可私信本人

    Java读写word文件

    它实际上是将Word文档解析为一系列XML部件,然后进行操作,这可能导致生成的文档与原始Word格式有所不同,且在某些情况下可能无法正确打开。 相比之下,Java2Word库专门针对Word文档操作进行了优化,它可以更好地...

    java获取word文档的条目化内容

    java调用PageOffice在线编辑word文件的时候,获取word文档的条目化内容。 PageOffice V4.0 企业版试用序列号:Q37LN-W8NI-KFSQ-LEY3Y 部署步骤: 1. 拷贝simpledemo8文件夹到Tomcat的webapps目录下 2. 访问...

    java读取Word文档依赖jar包

    在Java编程环境中,读取和操作Microsoft Word文档通常需要依赖外部库,Apache POI就是其中最常用的一个。Apache POI是一个开源项目,它允许开发者使用Java处理Microsoft Office格式的文件,包括Word(.doc和.docx)...

    java使用poi技术解析word文档

    Java 使用 POI 技术解析 Word 文档 Java 语言作为一种流行的编程语言,经常需要与其他软件进行交互,例如 Microsoft Office 中的 Word 文档。在这种情况下,Apache POI 项目便提供了一种解决方案,允许 Java 应用...

    java html转换word

    总的来说,通过Apache POI,我们可以利用Java实现HTML到Word的转换,但这个过程需要对HTML和Word文档的内部结构有深入的理解,以及一些额外的代码来处理解析和转换的细节。提供的jar包可能是Apache POI的库,用于...

Global site tag (gtag.js) - Google Analytics