关闭

java使用poi读取doc和docx文件

标签: javapoijava读取wordjava读取docjava读取docx
17357人阅读 评论(16) 收藏 举报
分类:

这几天在学习java io流的东西,有一个网友看到博客后问了一个问题,就是说他的doc文档为什么用我所说的方法死活就是乱码。

我一开始以为是他方法问题,结果自己试了之后发现和他的结果一样也是乱码。

于是在网上搜寻了一阵之后才发现原来doc文档和excel一样不能用普通的io流的方法来读取,而是也需要用poi,于是进行了一番尝试后,终于以正确的编码格式读取了这个doc文件。

在网上搜索的过程中发现doc和docx的读取方法是不一样的,于是顺带也学了一下docx文件的简单读取。

一、导包:
doc文件的读取,需要导入poi-scratchpad的jar包和相关依赖包:
这里写图片描述

docx文件读取,需要导入poi-ooxml的jar包和相关依赖包:
这里写图片描述

我用的是maven构建项目,相关的依赖包会自动导入,maven导包配置如下:

 <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.8</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-scratchpad</artifactId>
        <version>3.8</version>
    </dependency>

二、读取文件的代码:
1、doc文件读取简单示例:

public static void readAndWriterTest3() throws IOException {
        File file = new File("C:\\Users\\tuzongxun123\\Desktop\\aa.doc");
        String str = "";
        try {
            FileInputStream fis = new FileInputStream(file);
            HWPFDocument doc = new HWPFDocument(fis);
            String doc1 = doc.getDocumentText();
            System.out.println(doc1);
            StringBuilder doc2 = doc.getText();
            System.out.println(doc2);
            Range rang = doc.getRange();
            String doc3 = rang.text();
            System.out.println(doc3);
            fis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

2、docx文件读取简单示例:

public static void readAndWriterTest4() throws IOException {
        File file = new File("C:\\Users\\tuzongxun123\\Desktop\\aa.docx");
        String str = "";
        try {
            FileInputStream fis = new FileInputStream(file);
            XWPFDocument xdoc = new XWPFDocument(fis);
            XWPFWordExtractor extractor = new XWPFWordExtractor(xdoc);
            String doc1 = extractor.getText();
            System.out.println(doc1);
            fis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

//20171218修改
我并没有在工作中操作过word,这篇博客也只是一时兴起所做,因此写的很简单。
而最近陆续有朋友找我询问相关的问题,其中有好几个都在询问依赖包有哪些,为了避免一再回答这种问题,特将依赖包截图:
这里写图片描述

7
4
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

POI 读取word (word 2003 和 word 2007)

最近在给客户做系统的时候,用户提出需求,要能够导入 word 文件,现在 microsoft word 有好几个版本 97、2003、2007的,这三个版本存储数据的格式上都有相当大的差别,而现在 9...
  • hemingwang0902
  • hemingwang0902
  • 2009-07-26 15:50
  • 45875

使用POI读写word docx文件

来自:http://haohaoxuexi.iteye.com/blog/2049110               POI在读写word docx文件时是通过xwpf模块来进行的,其核心是XW...
  • myfmyfmyfmyf
  • myfmyfmyfmyf
  • 2015-09-25 09:57
  • 19965

关于poi读取word docx格式文本和图片功能

最近接手了一个考试系统的项目,其中有个功能是要批量导入试题,客户提供的试题是docx文档格式的,并且问题和答案都有可能含有图片,所以总结了下使用POI读取试题信息的技术方案。关于POI需要的jar包自...
  • x6582026
  • x6582026
  • 2017-08-26 14:29
  • 975

POI 读取word (word2003 和 word2007)

读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi-3.5-beta6-20090622.jar 和 poi-scratchpad-3.5-beta6-20090622.j...
  • zo_184
  • zo_184
  • 2017-05-18 20:20
  • 413

使用POI读取word文档内容

读word doc文件2中方式 1.1     通过WordExtractor读文件(在WordExtractor内部进行信息读取时还是通过HWPFDocument来获取的。) 1.2  ...
  • QQ578473688
  • QQ578473688
  • 2017-05-14 22:59
  • 11573

poi读取word文档中内容

poi  读取word文档中内容 package com.test.document.util; import java.io.File; import java.io.FileIn...
  • tanyongJava
  • tanyongJava
  • 2012-10-30 15:36
  • 1754

POI 读取Word

使用 POI 读写 word docx 文件 目录 1     读docx文件 1.1     通过XWPFWordExtractor读 1.2  &#...
  • rex1st1226
  • rex1st1226
  • 2015-05-03 00:00
  • 984

poi操作word文档总结

POI分段落生成纯Word动态模板并导入数据 导出数据,可以用word另存为xml格式的ftl文件,变量用${变量名}表示,然后在类中通过 freemarker去替换变量。 但是怎么导入w...
  • mike_caoyong
  • mike_caoyong
  • 2014-06-05 17:18
  • 9662

Java POI 读取word文件

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 1.读取word 2003及word 200...
  • tianzongnihao
  • tianzongnihao
  • 2017-02-16 16:30
  • 815

poi操作word 2007 常用方法总结

原文地址点击打开链接,保存备用。 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStre...
  • fkbush
  • fkbush
  • 2016-05-31 09:42
  • 6140
    有问题要问?点击QQ联系我!
    有需要,qq联系我
    1160569243
    公告栏
    个人资料
    • 访问:787913次
    • 积分:9989
    • 等级:
    • 排名:第2029名
    • 原创:230篇
    • 转载:38篇
    • 译文:0篇
    • 评论:408条