java使用poi讀取doc和docx文件的實(shí)現(xiàn)示例
這幾天在學(xué)習(xí)java io流的東西,有一個(gè)網(wǎng)友看到博客后問了一個(gè)問題,就是說他的doc文檔為什么用我所說的方法死活就是亂碼。
我一開始以為是他方法問題,結(jié)果自己試了之后發(fā)現(xiàn)和他的結(jié)果一樣也是亂碼。
于是在網(wǎng)上搜尋了一陣之后才發(fā)現(xiàn)原來doc文檔和excel一樣不能用普通的io流的方法來讀取,而是也需要用poi,于是進(jìn)行了一番嘗試后,終于以正確的編碼格式讀取了這個(gè)doc文件。
在網(wǎng)上搜索的過程中發(fā)現(xiàn)doc和docx的讀取方法是不一樣的,于是順帶也學(xué)了一下docx文件的簡單讀取。
一、導(dǎo)包:
doc文件的讀取,需要導(dǎo)入poi-scratchpad的jar包和相關(guān)依賴包:

docx文件讀取,需要導(dǎo)入poi-ooxml的jar包和相關(guān)依賴包:

我用的是maven構(gòu)建項(xiàng)目,相關(guān)的依賴包會自動導(dǎo)入,maven導(dǎo)包配置如下:
<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();
}
}
我并沒有在工作中操作過word,這篇博客也只是一時(shí)興起所做,因此寫的很簡單。
而最近陸續(xù)有朋友找我詢問相關(guān)的問題,其中有好幾個(gè)都在詢問依賴包有哪些,為了避免一再回答這種問題,特將依賴包截圖:

到此這篇關(guān)于java使用poi讀取doc和docx文件的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)java poi讀取doc和docx內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java的Netty進(jìn)階之Future和Promise詳解
這篇文章主要介紹了Java的Netty進(jìn)階之Future和Promise詳解,Netty 是基于 Java NIO 的異步事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用框架,使用 Netty 可以快速開發(fā)網(wǎng)絡(luò)應(yīng)用,Netty 提供了高層次的抽象來簡化 TCP 和 UDP 服務(wù)器的編程,但是你仍然可以使用底層的 API,需要的朋友可以參考下2023-11-11
詳解Java如何使用集合來實(shí)現(xiàn)一個(gè)客戶信息管理系統(tǒng)
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java 集合實(shí)現(xiàn)一個(gè)客戶信息管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11
Springmvc如何實(shí)現(xiàn)向前臺傳遞數(shù)據(jù)
這篇文章主要介紹了Springmvc如何實(shí)現(xiàn)向前臺傳遞數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Mybatis 入門之MyBatis環(huán)境搭建(第一篇)
Mybatis的前身叫iBatis,本是apache的一個(gè)開源項(xiàng)目, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis。這篇文章主要介紹了Mybatis入門第一篇之MyBaits環(huán)境搭建,需要的朋友參考下2016-12-12

