```java
@Test
public void main2() throws Exception {
XWPFDocument document = new XWPFDocument();
// 11100000055666926W
// 11210200001653732T
// 创建段落
XWPFParagraph firstParagraph = document.createParagraph();
XWPFStyles newStyles = document.createStyles();
String heading1 = "Heading1";
createHeadingStyle(document, newStyles, heading1, 1, 45, "000000", "宋体");
heading1 = "Heading2";
createHeadingStyle(document, newStyles, heading1, 2, 30, "000000", "宋体");
XWPFParagraph mulu = document.createParagraph();
mulu.setStyle("Heading3");
XWPFRun run0 = mulu.createRun();
run0.setText("目 录");
//run0.setColor("000000");
run0.setFontSize(22);
//run0.setBold(true);
run0.setFontFamily("黑体");
mulu.setAlignment(ParagraphAlignment.CENTER);
mulu.setSpacingAfter(600);
firstParagraph = document.createParagraph();
firstParagraph.setStyle("Heading1");
CTSimpleField ctSimpleField = firstParagraph.getCTP().addNewFldSimple();
ctSimpleField.setInstr("TOC \\o \"1-4\" \\h \\z \\u");
firstParagraph = document.createParagraph();
firstParagraph.setStyle("Heading2");
XWPFRun run1 = firstParagraph.createRun();
/* CTBookmark ctBookmarks = firstParagraph.getCTP().addNewBookmarkStart();
ctBookmarks.setName("biaoti");// 设置书签名称
ctBookmarks.setId(BigInteger.valueOf(0));
firstParagraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(0));
itemMap.put("biaoti","biaoti");*/
run1.setText("标题1");
//run1.setColor("000000");
run1.setFontSize(21);
run1.setFontFamily("微软雅黑");
//run1.setBold(true);
firstParagraph.setAlignment(ParagraphAlignment.CENTER);
firstParagraph = document.createParagraph();
firstParagraph.setStyle("Heading2");
run1 = firstParagraph.createRun();
/* CTBookmark ctBookmarks = firstParagraph.getCTP().addNewBookmarkStart();
ctBookmarks.setName("biaoti");// 设置书签名称
ctBookmarks.setId(BigInteger.valueOf(0));
firstParagraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(0));
itemMap.put("biaoti","biaoti");*/
run1.setText("标题2");
//run1.setColor("000000");
run1.setFontSize(21);
run1.setFontFamily("微软雅黑");
//run1.setBold(true);
firstParagraph.setAlignment(ParagraphAlignment.CENTER);
document.enforceUpdateFields();
try {
// 将文档保存到文件
FileOutputStream out = new FileOutputStream("D:\\examplea.docx");
document.write(out);
out.close();
System.out.println("文档创建成功!");
} catch (IOException e) {
System.out.println("创建文档时出现错误:" + e.getMessage());
}
}
public void createHeadingStyle(XWPFDocument doc, XWPFStyles styles, String strStyleId, int headingLevel, int pointSize, String hexColor, String typefaceName) {
//创建样式
CTStyle ctStyle = CTStyle.Factory.newInstance();
//设置id
ctStyle.setStyleId(strStyleId);
CTString styleName = CTString.Factory.newInstance();
styleName.setVal(strStyleId);
ctStyle.setName(styleName);
CTDecimalNumber indentNumber = CTDecimalNumber.Factory.newInstance();
indentNumber.setVal(BigInteger.valueOf(headingLevel));
// 数字越低在格式栏中越突出
ctStyle.setUiPriority(indentNumber);
CTOnOff onoffnull = CTOnOff.Factory.newInstance();
ctStyle.setUnhideWhenUsed(onoffnull);
// 样式将显示在“格式”栏中
ctStyle.setQFormat(onoffnull);
// 样式定义给定级别的标题
CTPPr ppr = CTPPr.Factory.newInstance();
ppr.setOutlineLvl(indentNumber);
ctStyle.setPPr(ppr);
XWPFStyle style = new XWPFStyle(ctStyle);
CTHpsMeasure size = CTHpsMeasure.Factory.newInstance();
size.setVal(new BigInteger(String.valueOf(pointSize)));
CTHpsMeasure size2 = CTHpsMeasure.Factory.newInstance();
size2.setVal(new BigInteger(String.valueOf(pointSize)));
CTFonts fonts = CTFonts.Factory.newInstance();
if (typefaceName == null || typefaceName.equals("")) {
typefaceName = "宋体";
}
fonts.setAscii(typefaceName); //字体
CTRPr rpr = CTRPr.Factory.newInstance();
rpr.setRFonts(fonts);
rpr.setSz(size);
rpr.setSzCs(size2); //字体大小
CTColor color = CTColor.Factory.newInstance();
color.setVal(hexToBytes(hexColor));
rpr.setColor(color); //字体颜色
style.getCTStyle().setRPr(rpr);
// is a null op if already defined
style.setType(STStyleType.PARAGRAPH);
styles.addStyle(style);
}
public static byte[] hexToBytes(String hexString) {
HexBinaryAdapter adapter = new HexBinaryAdapter();
byte[] bytes = adapter.unmarshal(hexString);
return bytes;
}
设置目录字体 和字号