Java 操作Word书签(一):添加、删除、读取书签_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java 操作Word书签(一):添加、删除、读取书签

Java 操作Word书签(一):添加、删除、读取书签

 2019/8/14 15:51:45  Miaonly  程序员俱乐部  我要评论(0)
  • 摘要:Word中,书签功能常用于查找、定位、标记特定字符或段落,对于篇幅较大的文档,此功能非常实用。下面,将介绍通过Java程序来添加及删除Word书签的方法。示例要点包括:1.添加书签1.1给指定段落添加书签1.2给指定字符串添加书签2.删除书签2.1删除书签2.2删除书签文本3.读取书签文本使用工具:FreeSpire.DocforJava(免费版)Jar文件获取及导入:方法1:通过官网下载jar文件包。下载后,解压文件。并将lib文件夹下的Spire.Doc.jar文件导入到java程序
  • 标签:Java 书签 操作

class="MsoNormal">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("bookmark2"));//通过书签名删除
        doc.getBookmarks().removeAt(1);//通过索引值删除

        //保存文档
        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();
    }
}

?

书签读取结果:



?

(本文完)

?

?

  • 大小: 37.7 KB
  • 大小: 121.8 KB
  • 大小: 125.4 KB
  • 大小: 199.2 KB
  • 查看图片附件
上一篇: Java多线程的内存模型 下一篇: 没有下一篇了!
发表评论
用户名: 匿名