zoukankan      html  css  js  c++  java
  • 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();
        }
    }

    书签读取结果:

    (本文完)

  • 相关阅读:
    2017-2018-1 20155316 《信息安全系统设计基础》第4周学习总结
    20145205 java语言实现数据结构实验一
    20145205 实验一 Java开发环境的熟悉
    20145205 《Java程序设计》第6周学习总结
    #20145205 《Java程序设计》第5周学习总结
    #20145205 《Java程序设计》第4周学习总结
    #20145205 《Java程序设计》第3周学习总结
    # 20145205《Java程序设计》第2周学习总结
    # 20145205 《Java程序设计》第1周学习总结
    问卷调查
  • 原文地址:https://www.cnblogs.com/Yesi/p/11358537.html
Copyright © 2011-2022 走看看