在用docx4j进行word 文档替换生成需要的文档情况下,有些 替换的内容需要换行。
首先我们打开需要生成文档的模版,然后用word另存为,选择word xml格式保存。
然后我们打开这个xml,查看需要 替换的地方。
此时我们把 一个包含 待替换内容的 <w:p> 标签所有内容 复制到代码中。并调整一下顺序,将
${serviceDetailsText}后的标签 放到string的前面,然后在跟上${serviceDetailsText}前面的标签。具体代码如下
public static final String skip = "</w:t>\n" +
" </w:r>\n" +
" </w:p>\n" +
" <w:p>\n" +
" <w:pPr>\n" +
" <w:keepNext w:val=\"0\" />\n" +
" <w:keepLines w:val=\"0\" />\n" +
" <w:widowControl />\n" +
" <w:suppressLineNumbers w:val=\"0\" />\n" +
" <w:spacing w:line=\"240\" w:lineRule=\"auto\" />\n" +
" <w:jc w:val=\"left\" />\n" +
" <w:rPr>\n" +
" <w:rFonts w:hint=\"eastAsia\" w:ascii=\"华文细黑\" w:hAnsi=\"华文细黑\" w:eastAsia=\"华文细黑\" w:cs=\"华文细黑\" />\n" +
" <w:sz w:val=\"18\" />\n" +
" <w:szCs w:val=\"18\" />\n" +
" <w:vertAlign w:val=\"baseline\" />\n" +
" <w:lang w:val=\"en-US\" w:eastAsia=\"zh-Hans\" />\n" +
" </w:rPr>\n" +
" </w:pPr>\n" +
" <w:r>\n" +
" <w:rPr>\n" +
" <w:rFonts w:hint=\"eastAsia\" w:ascii=\"华文细黑\" w:hAnsi=\"华文细黑\" w:eastAsia=\"华文细黑\" w:cs=\"华文细黑\" />\n" +
" <w:sz w:val=\"18\" />\n" +
" <w:szCs w:val=\"18\" />\n" +
" <w:vertAlign w:val=\"baseline\" />\n" +
" <w:lang w:val=\"en-US\" w:eastAsia=\"zh-Hans\" />\n" +
" </w:rPr>\n" +
" <w:t>";
最后我们在 替换的变量中 需要换行的位置增加这个 变量就可以实现换行了。
例如我们需要一个集合 在word中独占一行展示。
实现效果如下:
注意,如果单行内容过长,word也会自动换行。