真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么用Java讀取Word包含表格

本篇文章給大家分享的是有關(guān)怎么用Java讀取Word包含表格,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

十余年的鐵西網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整鐵西建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“鐵西網(wǎng)站設(shè)計(jì)”,“鐵西網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

怎么用Java讀取Word包含表格

本文轉(zhuǎn)載自微信公眾號(hào)「JAVA日知錄」,作者單一色調(diào)。轉(zhuǎn)載本文請(qǐng)聯(lián)系JAVA日知錄公眾號(hào)。

不能每天都發(fā)雞湯呀,今天分享一篇開發(fā)實(shí)戰(zhàn)。

業(yè)務(wù)需求

我們有這樣一個(gè)需求,需要抽取出WORD文檔中的內(nèi)容,然后組裝成特定的json格式發(fā)送給第三方引擎接口,輸入?yún)f(xié)議如下:

{     "tables": [         {             "cells": [                 {                     "col": 1,                     "row_span": 1,                     "row": 1,                     "col_span": 1,                     "content": "車輛名稱"                 }             ],             "id": 0,             "row_num": 2         }     ],     "paragraps": [         {             "para_id": 1,             "content": "Hello,JAVA日知錄"         }     ] }

這個(gè)輸入格式一看就是需要我們分段落和表格讀取word中的內(nèi)容,既然需求已定,那就直接開始動(dòng)手寫代碼吧。

基于POI實(shí)現(xiàn)

把 “java如何讀取word”  拿到百度去搜索,答案基本都是利用POI來實(shí)現(xiàn)。當(dāng)然利用POI確實(shí)可以實(shí)現(xiàn)按段落和表格提取出內(nèi)容并組裝成上述格式,但是在實(shí)踐過程中有下面2個(gè)問題:

需要分別處理兩種格式docx、docPOI使用不同的API來讀取docx和doc,所以讀取邏輯我們需要編寫兩次。

POI讀取doc的段落時(shí)會(huì)把表格的內(nèi)容也讀取出來  這個(gè)問題比較坑,poi有單獨(dú)的方法讀取文檔中所有表格,但是在讀取doc格式段落文檔的時(shí)候會(huì)把表格內(nèi)容也讀取出來,所以我們需要用如下方法排除掉表格:

//讀取doc HWPFDocument doc = new HWPFDocument(stream); Range range = doc.getRange();  //讀取段落 int num = range.numParagraphs(); Paragraph para; for (int i=0; i

考慮以上兩種原因,我們最后并沒有采取POI來實(shí)現(xiàn)word內(nèi)容提取功能,而是采用第二種方法,即利用 Spire.Doc for Java 來實(shí)現(xiàn)。

Spire.Doc for Java

Spire.Doc for Java 是一款專業(yè)的 Java Word 組件,開發(fā)人員使用它可以輕松地將 Word  文檔創(chuàng)建、讀取、編輯、轉(zhuǎn)換和打印等功能集成到自己的 Java 應(yīng)用程序中。

作為一款完全獨(dú)立的組件,Spire.Doc for Java 的運(yùn)行環(huán)境無需安裝 Microsoft Office。官網(wǎng)地址是  https://www.e-iceblue.cn/,我們項(xiàng)目中使用的開源免費(fèi)版。

首先我們修改maven倉庫地址

              com.e-iceblue         http://repo.e-iceblue.com/nexus/content/groups/public/      

引入對(duì)應(yīng)的jar包

     e-iceblue     spire.doc.free     3.9.0 

讀取word,這里展示的是測(cè)試類

public class SpireApplication {      public static void main(String[] args) {         String path = "D:\\testDoc22.doc";         spireParaghDoc(path);         spireForTableOfDoc(path);      }      //讀取段落     public static void spireParaghDoc(String path) {         Document doc = new Document(path);         for (int i = 0; i < doc.getSections().getCount(); i++) {             Section section = doc.getSections().get(i);             for (int j = 0; j < section.getParagraphs().getCount(); j++) {                 Paragraph paragraph = section.getParagraphs().get(j);                 System.out.println(paragraph.getText());             }         }     }      //讀取表格     public static void spireForTableOfDoc(String path) {         Document doc = new Document(path);         for (int i = 0; i < doc.getSections().getCount(); i++) {             Section section = doc.getSections().get(i);             for (int j = 0; j < section.getBody().getChildObjects().getCount(); j++) {                 DocumentObject obj = section.getBody().getChildObjects().get(j);                 if (obj.getDocumentObjectType() == DocumentObjectType.Table) {                     Table table = (Table) obj;                     for (int k = 0; k < table.getRows().getCount(); k++) {                         TableRow rows = table.getRows().get(k);                         for (int p = 0; p < rows.getCells().getCount(); p++) {                             for (int h = 0; h < rows.getCells().get(p).getParagraphs().getCount(); h++) {                                 Paragraph f = rows.getCells().get(p).getParagraphs().get(h);                                 System.out.println(f.getText());                             }                         }                     }                 }             }         }     }  }

通過上面代碼我們就可以按段落和表格讀取WORD中的內(nèi)容,而后根據(jù)系統(tǒng)業(yè)務(wù)要求的格式進(jìn)行封裝即可。

以上就是怎么用Java讀取Word包含表格,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站題目:怎么用Java讀取Word包含表格
本文網(wǎng)址:http://weahome.cn/article/gcgoip.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部