我正在考虑尝试在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文档,我能找到的唯一行间距设置决定了段落前后的行间距,而不是段落中用于文本行间距的行间距。
有没有人以前遇到过这种情况,或者有任何关于如何修复它的例子?
发布于 2015-01-03 13:33:25
我也遇到了同样的问题,在查看了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));
}发布于 2015-05-28 03:08:25
我最近不得不在POI中使用行间距,我的方法是获取段落并获取ooxml-schema
XWPFParagraph paragraph;
xml = paragraph->getCTP()->ToString();然后,模式将作为字符串存储在该xml变量中,您必须使用某个字符串函数从该变量中检索值
<w:spacing w:lineRule='atLeast' w:line='240' />W:行就是您需要的行
希望这能有所帮助!
发布于 2017-06-17 18:37:44
paragraph.setSpacingBetween(1);它将创建一个行距为1
https://stackoverflow.com/questions/23660811
复制相似问题