最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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文檔的結構

將word文檔另存為xml文檔

打開xml文檔,可以查看到xml的結構

二、引入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);

獲取文檔整體結構

document.getBodyElements獲取了docx文檔所有的元素,可以根據類型判斷段落、表格、還是引注。段落(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());
                }
            }
            // 關閉文檔
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

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

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

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

六、解析Word中的圖片示例

下面的示例是獲取圖片 環(huá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);
            }
            // 關閉文檔
            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

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

相關文章

  • SpringBoot?Web項目增刪改查入門實戰(zhàn)案例

    SpringBoot?Web項目增刪改查入門實戰(zhàn)案例

    這篇文章主要給大家介紹了關于SpringBoot?Web項目增刪改查入門實戰(zhàn)的相關資料,文中詳細介紹了如何實現新增、刪除、修改和查詢員工的功能,并使用統(tǒng)一響應結果進行前后端交互,需要的朋友可以參考下
    2024-11-11
  • SpringBoot項目啟動速度深度優(yōu)化指南

    SpringBoot項目啟動速度深度優(yōu)化指南

    本文介紹了Spring Boot 2.7.x~3.2.x的啟動優(yōu)化方法,從依賴優(yōu)化、自動配置優(yōu)化、Bean掃描與注冊優(yōu)化、懶加載優(yōu)化、初始化邏輯優(yōu)化、JVM調優(yōu)等多方面進行詳細闡述,通過依賴優(yōu)化、禁用不必要的自動配置、縮小Bean掃描范圍、全局開啟懶加載等策略,需要的朋友可以參考下
    2026-05-05
  • java學習之猜數字小游戲

    java學習之猜數字小游戲

    這篇文章主要為大家詳細介紹了java學習之猜數字小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • SpringBoot使用自定義注解實現數據脫敏過程詳細解析

    SpringBoot使用自定義注解實現數據脫敏過程詳細解析

    這篇文章主要介紹了SpringBoot自定義注解之脫敏注解詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java中獲取List中最后一個元素的三種方法

    Java中獲取List中最后一個元素的三種方法

    在Java編程中我們經常需要獲取一個List集合中的最后一個元素,這篇文章主要給大家介紹了關于Java中獲取List中最后一個元素的三種方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • 新手學習JQuery基本操作和使用案例解析

    新手學習JQuery基本操作和使用案例解析

    這篇文章主要介紹了新手學習JQuery基本操作和使用案例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Java高級之虛擬機加載機制的實例講解

    Java高級之虛擬機加載機制的實例講解

    下面小編就為大家分享一篇Java高級之虛擬機加載機制的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Java學習之局部變量、成員變量舉例詳解

    Java學習之局部變量、成員變量舉例詳解

    這篇文章主要介紹了Java中的成員變量和局部變量,包括它們的定義、特點、初始化、作用域和生命周期等,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • 關于Java的Condition接口最佳理解方式

    關于Java的Condition接口最佳理解方式

    這篇文章主要介紹了關于Java的Condition接口最佳理解方式,Condition就是實現了管程里面的條件變量,Java?語言內置的管程里只有一個條件變量,而Lock&Condition實現的管程支持多個條件變量,需要的朋友可以參考下
    2023-05-05
  • SpringBoot2.x 整合 AntiSamy防御XSS攻擊的簡單總結

    SpringBoot2.x 整合 AntiSamy防御XSS攻擊的簡單總結

    本文主要對SpringBoot2.x集成AntiSamy防御XSS攻擊進行簡單總結,其中SpringBoot使用的2.4.5版本,通過示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2021-08-08

最新評論

墨竹工卡县| 房产| 平塘县| 阳高县| 阳高县| 子长县| 丹江口市| 彭山县| 普安县| 秦皇岛市| 罗平县| 东乡| 延安市| 怀来县| 吉木乃县| 福建省| 龙州县| 安陆市| 平遥县| 靖宇县| 桐乡市| 宜州市| 天祝| 当涂县| 河源市| 顺义区| 桓仁| 合肥市| 大化| 新宁县| 汕头市| 屏山县| 东阳市| 聂拉木县| 长沙市| 繁昌县| 威信县| 修武县| 漳平市| 县级市| 张家界市|