首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache poi XWPF段落行距

Apache poi XWPF段落行距
EN

Stack Overflow用户
提问于 2014-05-15 01:00:04
回答 4查看 7.3K关注 0票数 3

我正在考虑尝试在Java/Coldfusion中使用Apache Poi构建word文档。到目前为止,它让我完成了很多我想要的格式,除了段落的行距。有没有人知道我会如何设置一个段落为单行间距?它继续构建具有多个间距段落的文档,间距为1.15。

以下是代码的一个示例:

代码语言:javascript
复制
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文档,我能找到的唯一行间距设置决定了段落前后的行间距,而不是段落中用于文本行间距的行间距。

有没有人以前遇到过这种情况,或者有任何关于如何修复它的例子?

EN

回答 4

Stack Overflow用户

发布于 2015-01-03 13:33:25

我也遇到了同样的问题,在查看了ooxml-schemas源代码和生成的docx文件的内部结构后,我找到了一个解决方案。以下是代码

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2015-05-28 03:08:25

我最近不得不在POI中使用行间距,我的方法是获取段落并获取ooxml-schema

代码语言:javascript
复制
XWPFParagraph paragraph;
xml = paragraph->getCTP()->ToString();

然后,模式将作为字符串存储在该xml变量中,您必须使用某个字符串函数从该变量中检索值

代码语言:javascript
复制
<w:spacing w:lineRule='atLeast' w:line='240' />

W:行就是您需要的行

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2017-06-17 18:37:44

代码语言:javascript
复制
paragraph.setSpacingBetween(1);

它将创建一个行距为1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23660811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档