本篇文章将介绍如何使用spire.doc for java添加word目录。一般在word中添加目录时,需要先设置文字大纲级别,因此以下示例将分两种情况来添加目录,即:
- 源文档没有设置大纲级别:添加目录前需要先手动设置大纲级别
- 源文档已设置大纲级别:通过域代码添加目录
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("测试文件.docx");
//在文档最前面插入一个段落,写入文本并格式化
paragraph parainserted = new paragraph(doc);
textrange tr= parainserted.appendtext("目 录");
tr.getcharacterformat().setbold(true);
tr.getcharacterformat().settextcolor(color.gray);
doc.getsections().get(0).getparagraphs().insert(0,parainserted);
parainserted.getformat().sethorizontalalignment(horizontalalignment.center);
//手动设置文档中指定段落的大纲级别
doc.getsections().get(0).getparagraphs().get(1).applystyle(builtinstyle.heading_1);
doc.getsections().get(0).getparagraphs().get(2).applystyle(builtinstyle.heading_2);
doc.getsections().get(0).getparagraphs().get(4).applystyle(builtinstyle.heading_2);
doc.getsections().get(0).getparagraphs().get(6).applystyle(builtinstyle.heading_2);
doc.getsections().get(0).getparagraphs().get(12).applystyle(builtinstyle.heading_2);
doc.getsections().get(0).getparagraphs().get(13).applystyle(builtinstyle.heading_3);
doc.getsections().get(0).getparagraphs().get(14).applystyle(builtinstyle.heading_3);
doc.getsections().get(0).getparagraphs().get(15).applystyle(builtinstyle.heading_3);
doc.getsections().get(0).getparagraphs().get(17).applystyle(builtinstyle.heading_1);
doc.getsections().get(0).getparagraphs().get(18).applystyle(builtinstyle.heading_2);
//添加目录
doc.getsections().get(0).getparagraphs().get(0).appendtoc(1,3);
//更新目录表
doc.updatetableofcontents();
//保存文档
doc.savetofile("目录.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("测试文件2.docx");
//在文档最前面插入一个段落,写入文本并格式化
paragraph parainserted = new paragraph(doc);
textrange tr= parainserted.appendtext("目 录");
tr.getcharacterformat().setbold(true);
tr.getcharacterformat().settextcolor(color.gray);
doc.getsections().get(0).getparagraphs().insert(0,parainserted);
parainserted.getformat().sethorizontalalignment(horizontalalignment.center);
//通过域代码添加目录表
tableofcontent toc = new tableofcontent(doc, "{\\o \"1-3\" \\h \\z \\u}");
doc.getsections().get(0).getparagraphs().get(0).appendtoc(1,3);
doc.updatetableofcontents();
//保存文档
doc.savetofile("目录2.docx", fileformat.docx_2010);
}
}
目录生成效果: