gpt4 book ai didi

java - Apache POI : Add elements to a cell using XWPFTableCell addParagraph(XWPFParagraph)

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:19 25 4
gpt4 key购买 nike

我希望将从文档读取的所有现有正文元素写入表格单元格。这是代码。尽管 sysout 写入了元素文本,但这些段落并未添加到单元格中。

public static void insertElementsToTableCell(XWPFTableCell cell, List<IBodyElement> elements)
{
for (Integer n = 0; n < elements.size(); n++)
{
IBodyElement element = elements.get(n);
if (element instanceof XWPFParagraph)
{
cell.addParagraph((XWPFParagraph) element);
System.out.println(((XWPFParagraph) element).getParagraphText());
}
}
}

任何帮助。谢谢。

最佳答案

不清楚为什么void addParagraph(XWPFParagraph p)完全公开,因为它只能与 public XWPFParagraph addParagraph() 结合使用。因为只有后者才会添加段落的 XML到单元格的XMLaddParagraph(XWPFParagraph p)仅将该段落添加到单元格的内部段落列表中,但不会更改 XML以任何方式。

看看XWPFTableCell.java看到这一点。

我们首先可以创建一个新的 XWPFParagraph添加到单元格的 CTTc然后使用 addParagraph(XWPFParagraph p)有了这个新段落。但我们也可以只使用低级元素。

尽管如此,我们应该将该段落添加到单元格的内部段落列表中,以防我们稍后需要通过 cell.getParagraphs() 使用单元格中的段落列表。 .

但是public void addParagraph(XWPFParagraph p)缺少更新protected List<IBodyElement> bodyElements 。所以public List<IBodyElement> getBodyElements()将段落添加到单元格后会出错。但使用 public XWPFParagraph addParagraph() 添加空段落后也是如此。 。并且XWPFTableCell中没有提供可用的方法。来纠正这个问题。

 public static void insertElementsToTableCell(XWPFTableCell cell, List<IBodyElement> elements) {
for (IBodyElement element : elements) {
if (element instanceof XWPFParagraph) {
XWPFParagraph paragraph = (XWPFParagraph) element;
cell.getCTTc().getPList().add(paragraph.getCTP());
//System.out.println(cell.getCTTc());
cell.addParagraph(paragraph);
}
}
}

关于java - Apache POI : Add elements to a cell using XWPFTableCell addParagraph(XWPFParagraph),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45516654/

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