目录是一种能够快速、有效地帮助读者了解文档或书籍主要内容的方式。在Word中,插入目录首先需要设置相应段落的大纲级别,根据大纲级别来生成目录表。本文中生成目录分2种情况来进行:

1.文档没有设置大纲级别,生成目录前需要手动设置

2.文档已设置大纲级别,通过域代码生成目录

使用工具:

  • Free Spire.Doc for Java (免费版)
  • IntelliJ IDEA

工具获取途径1:通过官网下载jar文件包,解压并导入jar文件到IDEA程序。

工具获取途径2:通过Maven仓库导入到Maven项目中,参考导入方法

Java示例代码(供参考)

【示例1】手动设置大纲级别并生成目录

import com.spire.doc.*;
import com.spire.doc.documents.BuiltinStyle;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.TextRange;
import java.awt.*; public class AddToc {
public static void main(String[]args){
//加载测试文档
Document doc = new Document("test.docx"); //在文档最前面插入一个段落,写入文本并格式化
Paragraph parainserted = new Paragraph(doc);
TextRange tr= parainserted.appendText("目 录");
tr.getCharacterFormat().setBold(true);
tr.getCharacterFormat().setTextColor(Color.gray);
doc.getSections().get().getParagraphs().insert(,parainserted);
parainserted.getFormat().setHorizontalAlignment(HorizontalAlignment.Center); //设置文档中指定段落的大纲级别
doc.getSections().get().getParagraphs().get().applyStyle(BuiltinStyle.Heading_1);
doc.getSections().get().getParagraphs().get().applyStyle(BuiltinStyle.Heading_2);
doc.getSections().get().getParagraphs().get().applyStyle(BuiltinStyle.Heading_2);
doc.getSections().get().getParagraphs().get().applyStyle(BuiltinStyle.Heading_2);
doc.getSections().get().getParagraphs().get().applyStyle(BuiltinStyle.Heading_2);
doc.getSections().get().getParagraphs().get().applyStyle(BuiltinStyle.Heading_3);
doc.getSections().get().getParagraphs().get().applyStyle(BuiltinStyle.Heading_3); //添加目录
doc.getSections().get().getParagraphs().get().appendTOC(,); //更新目录表
doc.updateTableOfContents(); //保存文档
doc.saveToFile("AddToc.docx",FileFormat.Docx_2010);
}
}

目录生成效果:

【示例2】已设置大纲级别,通过域代码直接生成目录

import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.TableOfContent;
import com.spire.doc.fields.TextRange; import java.awt.*; public class AddTOC2 {
public static void main (String[] args){
//加载已设置大纲级别的测试文档
Document doc = new Document("sample.docx"); //在文档最前面插入一个段落,写入文本并格式化
Paragraph parainserted = new Paragraph(doc);
TextRange tr= parainserted.appendText("目 录");
tr.getCharacterFormat().setBold(true);
tr.getCharacterFormat().setTextColor(Color.gray);
doc.getSections().get().getParagraphs().insert(,parainserted);
parainserted.getFormat().setHorizontalAlignment(HorizontalAlignment.Center); //通过域代码添加目录表
TableOfContent toc = new TableOfContent(doc, "{\\o \"1-3\" \\h \\z \\u}");
doc.getSections().get().getParagraphs().get().appendTOC(,);
doc.updateTableOfContents(); //保存文档
doc.saveToFile("AddToc2.docx", FileFormat.Docx_2010);
}
}

目录生成效果:

PS:关于通过域代码生成目录,可参考这篇文章,获取更多目录设置方法

转载请注明出处!

(本文完)

Java 添加Word目录的2种方法的更多相关文章

  1. java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)

     java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...

  2. java字符串大小写转换的两种方法

    转载自:飞扬青春sina blogjava字符串大小写转换的两种方法 import java.io..* public class convertToPrintString {          pu ...

  3. C#中得到程序当前工作目录和执行目录的五种方法

    string str="";str += "\r\n" + System.Diagnostics.Process.GetCurrentProcess().Mai ...

  4. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

  5. Java List转换为字符串的几种方法

    Java List转换为字符串的几种方法 import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import ...

  6. java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)

    转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...

  7. Java遍历List集合的三种方法

    Java遍历List集合的三种方法 List<String> list = new ArrayList<String>(); list.add("aaa") ...

  8. (转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)

    java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...

  9. Java 读取clob字段的几种方法

    Java 读取clob字段的几种方法 一.第一种 Clob clob = rs.getClob("remark");//Java.sql.Clob String detailinf ...

随机推荐

  1. 你不知道的JavaScript(上)this和对象原型(三)

    第四章  混核对象“类” 1.理论 面向对象编程强调的是数据和操作数据的行为本质上是互相关联的.实例化,继承,多态性 javascript中只有对象,并不存在可以被实例化的“类”.一个对象并不会被复制 ...

  2. django基础之day09,创建一个forms表单组件进行表单校验,知识点:error_messages,label,required,invalid,局部钩子函数,全局钩子函数, forms_obj.cleaned_data,forms_obj.errors,locals(), {{ forms.label }}:{{ forms }},{{ forms.errors.0 }}

    利用forms表单组件进行表单校验,完成用户名,密码,确认密码,邮箱功能的校验 该作业包含了下面的知识点: error_messages,label,required,invalid,局部钩子函数,全 ...

  3. html5 中video标签属性

      <video id="haoroomsvideo" src="haorooms.mp4" poster="images/haorooms.j ...

  4. Python爬虫实战:爬取腾讯视频的评论

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 易某某 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

  5. 微信 电脑版 HOOK(WeChat PC Hook)- 框架

    软件构成:一个主进程exe和一个注入的dll主进程exe:把dll注入到微信,发送指令给dll,接受dll的信息注入的dll:被注入到微信内部,拦截微信的数据,调用微信的功能 接收主进程的指令,执行指 ...

  6. Exceptionless应用--自定义插件

    遇到的问题/需求 这里会把一些敏感的参数记录下来,我们需要屏蔽掉,如图 我们希望日志里面有当前登录用户的信息,如图: 处理方法 tip:这里用的是.net非.net core 第一个问题(屏蔽敏感参数 ...

  7. Toggle the WinForms Ribbon Interface 切换 WinForms 功能区界面

    In this lesson, you will learn how to enable/disable the Ribbon User Interface in your application. ...

  8. Class文件结构-实例学习笔记

  9. 前端最佳实践——DOM操作

    1.浏览器渲染原理 在讲DOM操作的最佳性能实践之前,先介绍下浏览器的基本渲染原理. 分为以下四个步骤: 解析HTML(HTML Parser) 构建DOM树(DOM Tree) 渲染树构建(Rend ...

  10. STM32-24位AD7799驱动之手册代码详解,支持模拟SPI和硬件SPI

    1.AD7799介绍 AD7799结构图如下所示: 其中REFIN参考电压建议为2.5V, REFIN电压低于0.1V时,则差分输入ad值就无法检测了,如下图所示: 注意: 如果REG_CONFIG的 ...