用Java輕松讀取Word文檔內(nèi)容的常用方法
前言
在 Java 開(kāi)發(fā)里,有時(shí)候咱得讀取 Word 文檔里的內(nèi)容,這在處理合同、報(bào)告等文件時(shí)特別有用。咱可以根據(jù) Word 文檔的格式,用不同的庫(kù)來(lái)實(shí)現(xiàn)讀取功能。下面就詳細(xì)說(shuō)說(shuō) .doc
和 .docx
這兩種常見(jiàn)格式文檔的讀取方法。
1. 讀取 .doc 格式的 Word 文檔
引入依賴(lài)
如果用 Maven 管理項(xiàng)目,在 pom.xml
里添加 Apache POI 的依賴(lài):
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>5.2.3</version> </dependency>
代碼示例
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.extractor.WordExtractor; import java.io.FileInputStream; import java.io.IOException; public class ReadDocFile { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("example.doc")) { // 創(chuàng)建 HWPFDocument 對(duì)象來(lái)表示 .doc 文檔 HWPFDocument document = new HWPFDocument(fis); // 創(chuàng)建 WordExtractor 對(duì)象用于提取文檔內(nèi)容 WordExtractor extractor = new WordExtractor(document); // 獲取文檔的文本內(nèi)容 String content = extractor.getText(); System.out.println(content); } catch (IOException e) { e.printStackTrace(); System.out.println("讀取 .doc 文件失?。? + e.getMessage()); } } }
代碼解釋
FileInputStream fis = new FileInputStream("example.doc")
:創(chuàng)建一個(gè)文件輸入流,用來(lái)讀取example.doc
文件。HWPFDocument document = new HWPFDocument(fis)
:用HWPFDocument
類(lèi)創(chuàng)建一個(gè)文檔對(duì)象,它能處理.doc
格式的文檔。WordExtractor extractor = new WordExtractor(document)
:創(chuàng)建WordExtractor
對(duì)象,它可以從文檔對(duì)象里提取文本內(nèi)容。String content = extractor.getText()
:調(diào)用getText()
方法獲取文檔的全部文本內(nèi)容,然后打印出來(lái)。
2. 讀取 .docx 格式的 Word 文檔
引入依賴(lài)
同樣在 pom.xml
里添加 Apache POI 的依賴(lài):
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency>
代碼示例
import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import java.io.FileInputStream; import java.io.IOException; public class ReadDocxFile { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("example.docx")) { // 創(chuàng)建 XWPFDocument 對(duì)象來(lái)表示 .docx 文檔 XWPFDocument document = new XWPFDocument(fis); StringBuilder content = new StringBuilder(); // 遍歷文檔中的每個(gè)段落 for (XWPFParagraph paragraph : document.getParagraphs()) { // 遍歷段落中的每個(gè)文本運(yùn)行對(duì)象 for (XWPFRun run : paragraph.getRuns()) { content.append(run.getText(0)); } content.append("\n"); } System.out.println(content.toString()); } catch (IOException e) { e.printStackTrace(); System.out.println("讀取 .docx 文件失?。? + e.getMessage()); } } }
代碼解釋
FileInputStream fis = new FileInputStream("example.docx")
:創(chuàng)建文件輸入流讀取example.docx
文件。XWPFDocument document = new XWPFDocument(fis)
:用XWPFDocument
類(lèi)創(chuàng)建文檔對(duì)象,它專(zhuān)門(mén)處理.docx
格式的文檔。通過(guò)兩層循環(huán),外層遍歷文檔里的每個(gè)段落,內(nèi)層遍歷段落里的每個(gè)文本運(yùn)行對(duì)象,把文本內(nèi)容添加到
StringBuilder
里,最后打印出來(lái)。
嘿,朋友們!有了上面的方法,咱就能用 Java 輕松讀取不同格式的 Word 文檔內(nèi)容啦。趕緊動(dòng)手試試,讓你的程序也能和 Word 文檔“交流”起來(lái)!
總結(jié)
到此這篇關(guān)于用Java輕松讀取Word文檔內(nèi)容的常用方法的文章就介紹到這了,更多相關(guān)Java讀取Word文檔內(nèi)容內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis查找返回Map,List集合類(lèi)型的數(shù)據(jù)方式
這篇文章主要介紹了Mybatis查找返回Map,List集合類(lèi)型的數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java創(chuàng)建隨機(jī)數(shù)的四種方式總結(jié)
這篇文章主要介紹了java的四種隨機(jī)數(shù)生成方式的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2022-07-07基于eclipse-temurin鏡像部署spring boot應(yīng)用的實(shí)現(xiàn)示例
本文提供了基于eclipse-temurin鏡像部署Spring Boot應(yīng)用的詳細(xì)實(shí)現(xiàn)示例,通過(guò)使用Docker鏡像,可以輕松地創(chuàng)建和管理Spring Boot應(yīng)用程序的容器化環(huán)境,感興趣的可以了解一下2023-08-08Java基于正則表達(dá)式獲取指定HTML標(biāo)簽指定屬性值的方法
這篇文章主要介紹了Java基于正則表達(dá)式獲取指定HTML標(biāo)簽指定屬性值的方法,涉及java基于正則的HTML元素匹配相關(guān)操作技巧,需要的朋友可以參考下2017-01-01Java導(dǎo)入、導(dǎo)出excel用法步驟保姆級(jí)教程(附封裝好的工具類(lèi))
這篇文章主要介紹了Java導(dǎo)入、導(dǎo)出excel的相關(guān)資料,講解了使用Java和ApachePOI庫(kù)將數(shù)據(jù)導(dǎo)出為Excel文件,包括創(chuàng)建工作簿、工作表、行和單元格,設(shè)置樣式和字體,合并單元格,添加公式和下拉選擇等功能,需要的朋友可以參考下2025-03-03深度源碼解析Java 線程池的實(shí)現(xiàn)原理
如何高效的使用這些資源就是程序員在平時(shí)寫(xiě)代碼時(shí)候的一個(gè)努力的方向。本文要說(shuō)的線程池就是一種對(duì) CPU 利用的優(yōu)化手段。對(duì)Java 線程池的實(shí)現(xiàn)原理相關(guān)知識(shí)感興趣的朋友一起看看吧2021-05-05關(guān)于Java創(chuàng)建線程的2種方式以及對(duì)比
這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建線程的2種方式以及對(duì)比的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01一文學(xué)習(xí)Java NIO的ByteBuffer工作原理
很多網(wǎng)友說(shuō)JDK又在寫(xiě)B(tài)ug!下面通過(guò)通過(guò)本文學(xué)習(xí)下為何Java NIO的ByteBuffer這么垃圾,涉及到ByteBuf API 的優(yōu)點(diǎn)及工作原理解析,感興趣的朋友跟隨小編一起看看吧2021-05-05