java使用poi读取doc和docx文件

这几天在学习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();
        }
    }
时间: 2024-08-03 23:25:22

java使用poi读取doc和docx文件的相关文章

文档-关于JAVA的POI处理.doc、.docx时office和wps的不同处理

问题描述 关于JAVA的POI处理.doc..docx时office和wps的不同处理 比如用户发过来一个doc文档,但是我现在不知道他是wps的还是word的,这两个会有略微不同. 那我用poi处理时应该怎么做?可以识别吗? 我查了一下文档没有找到这部分的...大多网上的例子都是知道上传的是wps还是word. 我试了下发现不进行分类处理好像会有乱码... 解决方案 --上传文件 客户端上传文件到服务端,服务端可以获取到当前上传文件的文件名称.文件对象.文件类型等属性,判断文件的后缀区分当前上

java使用POI读取properties文件并写到Excel的方法_java

本文实例讲述了java使用POI读取properties文件并写到Excel的方法.分享给大家供大家参考.具体实现方法如下: package com.hubberspot.code; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import

字符-Java利用POI读取Word文档

问题描述 Java利用POI读取Word文档 虽然读取了word文档,但是没有格式. 这是我的代码 public class JFrameTest extends JFrame{ JTextArea jta=null; FileReader fr=null; BufferedReader br=null; public JFrameTest() { jta=new JTextArea(20,40); WordExtractor extractor=null; FileInputStream in

java使用poi开源框架生成excel文件并对其进行加密登入用户名若为汉字则出现乱码

问题描述 java使用poi开源框架生成excel文件并对其进行加密登入用户名若为汉字则出现乱码 public static byte[] encryptExcel(byte[] bytes String password String userName) { byte[] enExcelBytes = null; try { // 创建一个工作薄 HSSFWorkbook workbook = new HSSFWorkbook(new ByteArrayInputStream(bytes));

ios中 是怎么打开doc和docx文件?

问题描述 ios中 是怎么打开doc和docx文件? iOS 中有打开doc和docx文件的第三方库吗? 解决方案 可以直接打开吧! 我的就可以打开!!!!!!!!!!!! 解决方案二: http://code.tutsplus.com/tutorials/ios-sdk-previewing-and-opening-documents--mobile-15130

请教:JAVA用POI读取word BUG

问题描述 POI读取word异常java.io.IOException:Unabletoreadentireblock(88)bytesread;expected512bytesJava读取word是有些word文档能读取出来,但有些则出现这个异常.查很多资料说是POI类库问题.!!不知能否有其他解决方法 解决方案 解决方案二:你的word是doc还是docx?poi貌似不支持读docx的解决方案三:我知道,但都是doc格式的

java使用poi读取ppt文件和poi读取excel、word示例_java

Apache的POI项目可以用来处理MS Office文档,codeplex上还有一个它的.net版本.POI项目可创建和维护操作各种基于OOXML和OLE2文件格式的Java API.大多数MS Office都是OLE2格式的.POI通HSMF子项目来支持Outlook,通过HDGF子项目来支持Visio,通过HPBF子项目来支持Publisher. 使用POI抽取Word简单示例: 要引入poi-3.7.jat和poi-scratchpad-3.7.ajr这两个包. 复制代码 代码如下: p

java中怎样读取并显示大文件

问题描述 我知道用内存映射的方法可以分段读大文件,但我想打开一个编辑框,把读取的文本文件显示给用户,还能根据用户拉动滚动条动态显示需要的内容.eclipse下有openeditor(..)能做到显示,但要求读取整个文件,我文件太大,只能考虑边读一部分边显示,请问有没有办法解决?我用windows记事本打开30M的文件占内存要60M,而且刷新极慢,但我发现用UE打开该文件速度超快且只占8M内存,显然是用了分段读取显示,有谁知道它是怎样实现的? 解决方案 解决方案二:这个问题也是我想问的,请问解决了

java使用poi读取excel内容方法实例_java

复制代码 代码如下: import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.channels.FileChannel;import java.text.DecimalFormat;import java.text.SimpleDat