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

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

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

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

