测试1020.docx (30.5 KB)
我想在word文档中的“Index”位置插入目录,而不是在文档开头生成目录,该怎么实现?
@pengjg 您可以使用这样的代码来实现结果:
Document doc = new Document("input.docx");
DocumentBuilder builder = new DocumentBuilder(doc);
for (Paragraph para : (Iterable<Paragraph>) doc.getChildNodes(NodeType.PARAGRAPH, true))
{
if (para.getParagraphFormat().getStyleIdentifier() == StyleIdentifier.NORMAL
&& para.getText().trim().equals("Index"))
{
builder.moveTo(para);
builder.writeln();
builder.getParagraphFormat().clearFormatting();
builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u");
builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE);
break;
}
}
doc.updateFields();
doc.save("output.docx");
非常实用,感谢您的回复。
我没描述清楚问题,
test (10).zip (391.7 KB)
html字符串转word文档后,发现word文档里表格的行距会自动变大,
且用table.RowFormat.Height发现word表格行的行距无法继续缩小了, 怎么让word文档中表格的行距和html表格的行距保持一致 (问题可看附件) ?
@pengjg 我看不到 docx 和 html 文件中文本为 "1 12 "的表格行高有何不同。 行高取决于几个选项,包括字体和段落格式。如果您无法更改行高,您可以尝试通过配置字体大小或段落前后的空间来减小大小。
以下是它的代码示例:
Document doc = new Document("test (10).docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 2, true);
for (Row row : table.getRows()) {
for (Cell cell : row.getCells()) {
for (Run run : cell.getFirstParagraph().getRuns())
if (run.getText().trim().contains("12")) {
System.out.println(run.getText());
run.getParentParagraph().getParagraphFormat().setSpaceAfter(0);
run.getParentParagraph().getParagraphFormat().setSpaceBefore(0);
}
}
}
doc.save("out.docx");