我希望从文档中读取的所有现有正文元素都写入表格单元格。这是代码。虽然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());
}
}
}
任何帮助。感谢。
答案 0 :(得分:0)
不清楚为什么void addParagraph(XWPFParagraph p)
完全公开,因为它只与public XWPFParagraph addParagraph()
结合使用,因为只有后者会将paragrap的XML
添加到单元格的XML
。 addParagraph(XWPFParagraph p)
仅将段落添加到单元格的内部段落列表中,但不会以任何方式更改XML
。
我们首先可以创建一个新的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);
}
}
}