Java 操作Word書簽(一):添加、刪除、讀取書簽


Word中,書簽功能常用於查找、定位、標記特定字符或段落,對於篇幅較大的文檔,此功能非常實用。下面,將介紹通過Java程序來添加及刪除Word書簽的方法。示例要點包括:

1. 添加書簽

   1.1 給指定段落添加書簽

   1.2 給指定字符串添加書簽

2. 刪除書簽

   2.1刪除書簽

   2.2 刪除書簽文本

3. 讀取書簽文本

使用工具:Free Spire.Doc for Java (免費版)

Jar文件獲取及導入:

方法1 通過官網下載jar文件包。下載后,解壓文件。並將lib文件夾下的Spire.Doc.jar文件導入到java程序。參考如下導入效果:

方法2可通過maven倉庫安裝導入。可參考安裝導入方法

 

Java 代碼示例

【示例1】給指定段落添加書簽

import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;

public class AppendBookmark {
    public static void main(String[]args){
        //加載需要添加書簽的Word文檔
        Document doc = new Document();
        doc.loadFromFile("sample.docx");

        //獲取需要添加書簽的段落
        Paragraph para = doc.getSections().get(0).getParagraphs().get(1);

        //在段落起始、末尾添加書簽的開始標簽和結束標簽,並命名書簽
        BookmarkStart start = para.appendBookmarkStart("bookmark01");
        para.getItems().insert(0,start);
        para.appendBookmarkEnd("bookmark01");

        //保存文檔
        doc.saveToFile("appendbookmark.docx",FileFormat.Docx_2013);
        doc.dispose();
    }
}

書簽添加效果:

 

【示例2】給指定字符串添加書簽

import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextSelection;
import com.spire.doc.fields.TextRange;

public class AppendBookmarkToCharacter {
    public static void main(String[]args){
        //加載文檔
        Document doc = new Document();
        doc.loadFromFile("sample.docx");

        //查找指定字符串
        TextSelection textSelection = doc.findString("采用蘊含深意的象征語言,揭示人生的哲理。",false,false);
        TextRange range = textSelection.getAsOneRange();
        Paragraph para = range.getOwnerParagraph();
        int index = para.getChildObjects().indexOf(range);

        //添加書簽
        BookmarkStart start = new BookmarkStart(doc,"書簽1");
        BookmarkEnd end = new BookmarkEnd(doc, "書簽1");
        para.getChildObjects().insert(index, start);
        para.getChildObjects().insert(index + 2, end);

        //保存文檔
        doc.saveToFile("appendbookmarktocharacter.docx",FileFormat.Docx_2013);
        doc.dispose();
    }
}

書簽添加效果:

 

【示例3】刪除書簽、書簽文本

 

import com.spire.doc.*;
import com.spire.doc.documents.BookmarksNavigator;

public class DeleteBookmarkAndBookmarkcontent {
    public static void main(String[]args){
        //加載文檔
        Document doc = new Document();
        doc.loadFromFile("test.docx");

        //定位到特定的書簽
        BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(doc);
        bookmarksNavigator.moveToBookmark("bookmark1");

        //刪除書簽處的內容
        bookmarksNavigator.deleteBookmarkContent(true);

        //刪除書簽(僅刪除書簽標簽,原文書簽處的內容)
        doc.getBookmarks().remove(doc.getBookmarks().get("bookmark1"));//通過書簽名刪除
        doc.getBookmarks().removeAt(0);//通過索引值刪除

        //保存文檔
        doc.saveToFile("deletebookmark.docx",FileFormat.Docx_2013);
    }
}

【示例4】讀取書簽文本

 

import com.spire.doc.*;
import com.spire.doc.documents.BookmarksNavigator;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextBodyPart;
import com.spire.doc.fields.TextRange;

import java.io.IOException;
import java.io.PrintWriter;

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

        //獲取書簽
        BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(doc);
        bookmarksNavigator.moveToBookmark("bookmark1");

        //獲取書簽文本
        TextBodyPart textBodyPart = bookmarksNavigator.getBookmarkContent();

        //創建String變量
        String text = "";

        //遍歷書簽內容的項目
        for (Object item : textBodyPart.getBodyItems()) {

            //判斷項目是否為段落
            if (item instanceof Paragraph) {
                Paragraph paragraph = (Paragraph) item;

                //遍歷段落中的子對象
                for (Object childObj : paragraph.getChildObjects()) {

                    //判斷子對象是否為TextRange
                    if (childObj instanceof TextRange) {

                        //獲取TextRange中的文本
                        TextRange textRange = (TextRange) childObj;
                        text = text + textRange.getText();
                    }
                }
            }
        }

        //將獲取到的文本寫入Txt文件
        PrintWriter printWriter = new PrintWriter("BookmarkText.txt");
        printWriter.println(text);
        printWriter.close();
    }
}

書簽讀取結果:

 

(本文完)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM