天天看點

Java 讀取Word目錄内容

​Word中可根據對應文字的大綱級别來生成目錄,讀者通過目錄内容可快速擷取文檔内容架構及結構,并且能夠快速地定位到内容所在頁面,友善閱讀。在通過Java後端程式讀取Word文檔時,我們可以通過判定内容是否為目錄域,來實作讀取目錄内容,本文,将以Java代碼示例,展示如何實作該需求。

引入Jar

​​方法1​:在Maven項目中的pom.xml中配置如下内容導入:

<repositories>
        <repository>
            <id>com.e-iceblue</id>
            <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
        </repository>
    </repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc.free</artifactId>
        <version>5.2.0</version>
    </dependency>
</dependencies>      

​​方法2​:将​​Free Spire.Doc for Java​​包下載下傳到本地,解壓,找到lib檔案夾下的Spire.Doc.jar檔案,然後在IDEA中帶Project Structure手動導入。

Java代碼

import com.spire.doc.Document;
import com.spire.doc.Section;
import com.spire.doc.documents.Paragraph;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class GetTOC {
    public static void main(String[] args) throws IOException {
        //加載包含目錄的Word文檔
        Document doc = new Document();
        doc.loadFromFile("目錄2.docx");

        //擷取第一節
        Section section = doc.getSections().get(0);

        //儲存目錄内容到.txt文檔
        File file = new File("GetToc.txt");
        if (file.exists())
        {
            file.delete();
        }
        file.createNewFile();
        FileWriter fw = new FileWriter(file, true);
        BufferedWriter bw = new BufferedWriter(fw);

        //周遊第一節中的所有段落
        for (int i = 0; i < section.getParagraphs().getCount(); i++)
        {
            Paragraph paragraph = section.getParagraphs().get(i);
            //判斷段落是否為目錄
            if (paragraph.getStyleName().matches("TOC\\w+"))
            {
                //擷取目錄中的文本内容
                String text = paragraph.getText();
                //寫入txt文檔
                bw.write( text+"\r");
            }
            bw.write("\n");
        }

        bw.flush();
        bw.close();
        fw.close();
    }
}      

​執行程式,讀取目錄内容:​