Java 操作Word书签(一):添加、删除、读取书签
程序员文章站
2022-04-09 15:35:01
Word中,书签功能常用于查找、定位、标记特定字符或段落,对于篇幅较大的文档,此功能非常实用。下面,将介绍通过Java程序来添加及删除Word书签的方法。示例要点包括: 1. 添加书签 1.1 给指定段落添加书签 1.2 给指定字符串添加书签 2. 删除书签 2.1删除书签 2.2 删除书签文本 3 ......
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(); } }
书签读取结果:
(本文完)
上一篇: Linux文件基本命令
下一篇: 鸡排的做法有哪些?好吃不重样!