gpt4 book ai didi

java - 使用 Apache POI 创建的 Docx 中的重复表段落

转载 作者:行者123 更新时间:2023-12-01 12:46:24 24 4
gpt4 key购买 nike

我使用 Apache POI 来创建包含表格的 docx。

为了设置表格格式,我使用以下方法向单元格添加段落:

private XWPFParagraph getTableParagraph(XWPFDocument document, XWPFParagraph paragraph, String text, boolean bold, boolean wrap, boolean allineaDx){
if (paragraph == null) paragraph = document.createParagraph();
XWPFRun p2run = paragraph.createRun();

p2run.setText(text);

p2run.setFontSize(5);
p2run.setBold(bold);

if (wrap) paragraph.setWordWrap(wrap);
if (allineaDx) paragraph.setAlignment(ParagraphAlignment.RIGHT);

return paragraph;
}

我用以下方法调用该方法:

        XWPFTableRow tableOneRowOne = tableOne.getRow(0);
tableOneRowOne.getCell(0).setParagraph(getTableParagraph(document, tableOneRowOne.getCell(0).getParagraphArray(0), "some text", true, true, false));

表格按预期显示,但在单元格中创建和插入的所有段落也在表格末尾可见。为什么?我怎样才能防止这种情况发生?

最佳答案

问题已解决

重复是由 document.createParagraph() 引起的。

我将方法更改为:

private XWPFParagraph getTableParagraph(XWPFTableCell cell, String text, boolean bold, boolean wrap, boolean allineaDx) throws Exception{

XWPFParagraph paragraph = cell.addParagraph();
cell.removeParagraph(0);

XWPFRun p2run = paragraph.createRun();

p2run.setText(text);

p2run.setFontSize(5);
p2run.setBold(bold);

if (wrap) paragraph.setWordWrap(wrap);
if (allineaDx) paragraph.setAlignment(ParagraphAlignment.RIGHT);

return paragraph;
}

现在一切都正常了。请注意 cell.removeParagraph(0)

单元格本身带有一个空段落,添加新段落最终会导致单元格内出现重复的段落。删除原始段落效果很好。

关于java - 使用 Apache POI 创建的 Docx 中的重复表段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24660448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com