我正在尝试使用Java / Coldfusion中的Apache Poi构建word文档。到目前为止,除了段落的行距之外,它让我做了很多我想要的格式化。有谁知道如何将段落设置为单行间隔?它不断构建具有多个间隔段落的文档,间距为1.15。
以下是代码示例:
document = loader.create("org.apache.poi.xwpf.usermodel.XWPFDocument");
ParagraphAlignment = loader.create("org.apache.poi.xwpf.usermodel.ParagraphAlignment" );
paragraphOne = document.createParagraph();
paragraphOne.setAlignment(ParagraphAlignment.CENTER);
paragraphOneRunOne = paragraphVar.createRun();
paragraphOneRunOne.setFontFamily('Cambria');
paragraphOneRunOne.setFontSize(12);
paragraphOneRunOne.setBold(false);
paragraphOneRunOne.setText(Here's one line of text in this paragraph);
paragraphOneRunOne.addBreak();
paragraphOneRunTwo = paragraphVar.createRun();
paragraphOneRunTwo.setFontFamily('Cambria');
paragraphOneRunTwo.setFontSize(12);
paragraphOneRunTwo.setBold(false);
paragraphOneRunTwo.setText(Here's a second line of text in this paragraph);
paragraphOneRunTwo.addBreak();
我查看了示例和api文档,我找到的行间距的唯一设置决定了段落之前或之后的行间距,而不是文本行间距的段落内。
之前有人遇到过此问题,或者有任何关于如何修复它的例子?
答案 0 :(得分:1)
我也遇到了同样的问题,并在通过ooxml-schemas源和生成的docx文件的内部后找到了解决方案。这是代码
public void setSingleLineSpacing(XWPFParagraph para) {
CTPPr ppr = para.getCTP().getPPr();
if (ppr == null) ppr = para.getCTP().addNewPPr();
CTSpacing spacing = ppr.isSetSpacing()? ppr.getSpacing() : ppr.addNewSpacing();
spacing.setAfter(BigInteger.valueOf(0));
spacing.setBefore(BigInteger.valueOf(0));
spacing.setLineRule(STLineSpacingRule.AUTO);
spacing.setLine(BigInteger.valueOf(240));
}
答案 1 :(得分:1)
我最近必须使用POI的行间距,我的方法是获取段落并获取ooxml-schema
XWPFParagraph paragraph;
xml = paragraph->getCTP()->ToString();
然后架构将作为字符串存储在该xml变量中,您必须使用一些字符串函数从中检索该值
<w:spacing w:lineRule='atLeast' w:line='240' />
w:line是你需要的那个
希望这有帮助!
答案 2 :(得分:0)
paragraph.setSpacingBetween(1);
它将创建1
的行间距