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();
}
}
執行程式,讀取目錄内容: