欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java通過poi解析word入門的操作方法

 更新時間:2024年08月21日 12:01:34   投稿:mrr  
Apache POI 是一個處理Miscrosoft Office各種文件格式的開源項目,可以使用POI在Java程序中對Miscrosoft Office各種文件進行讀寫操作,本文給大家介紹java通過poi解析word入門的操作方法,感興趣的朋友一起看看吧

介紹

Apache POI 是一個處理Miscrosoft Office各種文件格式的開源項目??梢允褂肞OI在Java程序中對Miscrosoft Office各種文件進行讀寫操作。

一、了解word docx文檔的結(jié)構(gòu)

將word文檔另存為xml文檔

打開xml文檔,可以查看到xml的結(jié)構(gòu)

二、引入POI的依賴

   <dependency>
       <groupId>org.apache.poi</groupId>
       <artifactId>poi</artifactId>
       <version>5.2.3</version>
   </dependency>
   <dependency>
       <groupId>org.apache.poi</groupId>
       <artifactId>poi-ooxml</artifactId>
       <version>5.2.3</version>
   </dependency>

三、解析Word文檔常用API

加載Word文檔

讀取docx文件,獲取XWPFDocument 實例

FileInputStream fis = new FileInputStream("C:\\test.docx");
XWPFDocument document = new XWPFDocument(fis);

獲取文檔整體結(jié)構(gòu)

document.getBodyElements獲取了docx文檔所有的元素,可以根據(jù)類型判斷段落、表格、還是引注。段落(XWPFParagraph)、表格(XWPFTable)、引注(XWPFSDT)

List<IBodyElement> bodyElements = document.getBodyElements();
for(int i=0;i<size;i++) {
    IBodyElement iBodyElement = bodyElements.get(i);
    if(iBodyElement instanceof XWPFParagraph){
        XWPFParagraph xwpParagraph=(XWPFParagraph)iBodyElement;
    }
    if(iBodyElement instanceof XWPFTable){
        XWPFTable xwpfTable=(XWPFTable)iBodyElement;
    }
    if(iBodyElement instanceof XWPFSDT){
        XWPFSDT xwpfSdt=(XWPFSDT)iBodyElement;
    }
}

獲取文檔中的段落

// 獲取所有段落
 List<XWPFParagraph> paragraphs = document.getParagraphs();

獲取文檔中的表格

// 獲取所有表格
 List<XWPFTable> xwpfTableList = xwpfDocument.getTables();

獲取文檔中的腳注

// 獲取所有腳注
List<XWPFFootnote> footnotes = document.getFootnotes();

四、解析Word中的段落示例

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
public class WordReader {
    public static void main(String[] args) {
        try {
            // 加載Word文檔
            FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\test.docx");
            XWPFDocument document = new XWPFDocument(fis);
            // 獲取所有段落
            List<XWPFParagraph> paragraphs = document.getParagraphs();
            int index=0;
            for (XWPFParagraph paragraph : paragraphs) {
                // 獲取段落樣式
                String style = paragraph.getStyle();
                System.out.println(index++);
                System.out.println("style "+style);
                System.out.println("getStyleID "+paragraph.getStyleID());
                System.out.println(paragraph.getText());
                if (paragraph.getStyleID() != null && paragraph.getStyleID().startsWith("Heading")) {
                    System.out.println("title:"+paragraph.getText());
                }
            }
            // 關(guān)閉文檔
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

五、讀取Word文檔并遍歷圖片

使用POI讀取Word文檔并遍歷其中的圖片,通常涉及以下幾個步驟:

  • 創(chuàng)建XWPFDocument對象:使用XWPFDocument類來表示W(wǎng)ord文檔,并通過OPCPackage.open()方法加載文檔。
  • 遍歷文檔內(nèi)容:Word文檔中的圖片通常包含在段落(XWPFParagraph)的運行(XWPFRun)中。你需要遍歷文檔中的每個段落,再遍歷每個段落中的每個運行。
  • 獲取圖片數(shù)據(jù):在每個運行中,你可以通過調(diào)用getEmbeddedPictures()方法來獲取嵌入的圖片列表(注意,這個方法可能在新版本的POI中有所不同,具體請參考官方文檔)。然后,通過XWPFPictureData對象獲取圖片的二進制數(shù)據(jù)和類型。
  • 處理圖片數(shù)據(jù):一旦你獲得了圖片的二進制數(shù)據(jù),就可以將其保存到文件系統(tǒng)中,或進行其他處理。

六、解析Word中的圖片示例

下面的示例是獲取圖片 環(huán)繞方式,此外,我們還可以使用其他方法來獲取圖片的相關(guān)信息,例如獲取圖片的寬度、高度等。Java POI庫提供了豐富的API,可以滿足各種圖片處理需求。

import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTAnchor;
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDrawing;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
public class WordPictureTest {
    public static void main(String[] args) {
        try {
            // 加載Word文檔
            FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\pic.docx");
            XWPFDocument document = new XWPFDocument(fis);
            // 獲取所有段落
            List<XWPFParagraph> paragraphs = document.getParagraphs();
            int index=0;
            for (XWPFParagraph paragraph : paragraphs) {
                parsePicture(paragraph);
            }
            // 關(guān)閉文檔
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    private static void parsePicture(XWPFParagraph paragraph){
        List<XWPFRun> runs = paragraph.getRuns();
        for (XWPFRun run:runs){
            List<XWPFPicture> embeddedPictures = run.getEmbeddedPictures();
            for(XWPFPicture picture:embeddedPictures){
                String fileName = picture.getPictureData().getFileName();
                System.out.println(fileName);
                CTDrawing drawing = run.getCTR().getDrawingArray(0);
                List<CTAnchor> anchorList = drawing.getAnchorList();
                List<CTInline> inlineList = drawing.getInlineList();
                System.out.println("anchorList "+anchorList.size());
                //inlineList.size>0 說明時嵌入式的布局
                System.out.println("inlineList "+inlineList.size());
                for (CTAnchor anchor :anchorList){
                    //文字環(huán)繞
                    boolean behindDoc = anchor.getBehindDoc();
                    boolean setWrapSquare = anchor.isSetWrapSquare();
                    boolean setWrapThrough = anchor.isSetWrapThrough();
                    boolean setWrapTight = anchor.isSetWrapTight();
                    boolean setWrapTopAndBottom = anchor.isSetWrapTopAndBottom();
                    boolean setWrapNone = anchor.isSetWrapNone();
                    System.out.println("setWrapNone "+setWrapNone +" behindDoc "+behindDoc);
                }
        }
    }
}

五、項目下載

word文擋解析檢查項目下載地址

https://download.csdn.net/download/gwc791224/89597904

到此這篇關(guān)于java通過poi解析word入門的文章就介紹到這了,更多相關(guān)java poi解析word入門內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot返回的json屏蔽某些屬性的操作

    Springboot返回的json屏蔽某些屬性的操作

    這篇文章主要介紹了Springboot返回的json屏蔽某些屬性的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java非遞歸實現(xiàn)刪除任意目錄的方法

    Java非遞歸實現(xiàn)刪除任意目錄的方法

    這篇文章主要為大家詳細介紹了Java非遞歸實現(xiàn)刪除任意目錄的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java初學之繼承與多態(tài)

    Java初學之繼承與多態(tài)

    這篇文章主要介紹了Java 繼承與多態(tài)的深入理解的相關(guān)資料,子類繼承父類的特征和行為,使得子類具有父類的各種屬性和方法。或子類從父類繼承方法,使得子類具有父類相同的行為,需要的朋友可以參考下
    2021-07-07
  • Java Web學習之Cookie和Session的深入理解

    Java Web學習之Cookie和Session的深入理解

    這篇文章主要給大家介紹了關(guān)于Java Web學習之Cookie和Session的相關(guān)資料,需要的朋友可以參考下
    2018-04-04
  • spring data jpa使用詳解(推薦)

    spring data jpa使用詳解(推薦)

    這篇文章主要介紹了spring data jpa使用詳解(推薦),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 詳解Java8與Runtime.getRuntime().availableProcessors()

    詳解Java8與Runtime.getRuntime().availableProcessors()

    這篇文章主要介紹了詳解Java8與Runtime.getRuntime().availableProcessors(),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Spring接口版本控制方案及RequestMappingHandlerMapping接口介紹(最新推薦)

    Spring接口版本控制方案及RequestMappingHandlerMapping接口介紹(最新推薦)

    RequestMappingHandlerMapping接口是Spring MVC中的一個核心組件,負責處理請求映射和處理器的匹配這篇文章主要介紹了Spring接口版本控制方案及RequestMappingHandlerMapping接口介紹,需要的朋友可以參考下
    2024-07-07
  • 大廠禁止SpringBoot在項目使用Tomcat容器原理解析

    大廠禁止SpringBoot在項目使用Tomcat容器原理解析

    這篇文章主要為大家介紹了大廠禁止SpringBoot在項目使用Tomcat原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Java?中?Class?Path?和?Package的使用詳解

    Java?中?Class?Path?和?Package的使用詳解

    這篇文章主要介紹了Java?中?Class?Path和Package的使用詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • Java創(chuàng)建線程的五種寫法總結(jié)

    Java創(chuàng)建線程的五種寫法總結(jié)

    本文主要為大家詳細介紹一下Java實現(xiàn)線程創(chuàng)建的五種寫法,文中的示例代碼講解詳細,對我們學習有一定的幫助,感興趣的可以跟隨小編學習一下
    2022-08-08

最新評論