[POI踩坑记]POI复制行后进行document merge时报错:org.apache.xmlbeans,XmlException: error: 与元素类型 “w:trPr” 相关联的属性 “xsi:nil” 的前缀 “xsi” 未绑定

684次阅读
一条评论

共计 1120 个字符,预计需要花费 3 分钟才能阅读完成。

近期使用 poi-tl 开源工具,渲染word文档,涉及到表格操作,踩到一个坑!先说下我的解决方案:设置该行行高等属性即可解决
http://deepoove.com/poi-tl/1.10.x/

在进行word表格的 行copy 时候,控制台出现报错如下:
[POI踩坑记]POI复制行后进行document merge时报错:org.apache.xmlbeans,XmlException: error: 与元素类型
感觉是行的某种属性丢失了,导致copy行,然后进行merge操作时候 报错

报错位置代码:

            NiceXWPFDocument receivePhoto = photoPrintCommonService.photoPrint(receiveDoc, "receive_doc");
            if (null != receivePhoto) {
                NiceXWPFDocument receiveDocument = template.getXWPFDocument();
                receiveDocument.createParagraph();
                NiceXWPFDocument merged = receiveDocument.merge(receivePhoto);
                template.reload(merged);
            }
            // merge的时候报错,内容如上

观察报错内容可能是表格tr行问题,继续寻找代码中涉及到复制行属性的信息,如下代码:
[POI踩坑记]POI复制行后进行document merge时报错:org.apache.xmlbeans,XmlException: error: 与元素类型
这里涉及复制行属性,单独计算sourceRow.getCtRow().getTrPr()为null,得出属性丢失
chatGPT给出如下建议:

根据您提供的代码 `sourceRow.getCtRow().getTrPr()`,我可以看出您正在使用某种程序或库来处理电子表格(Excel)的行数据。

根据代码中的调用链,`getCtRow()` 方法返回一个对象,然后您调用 `getTrPr()` 方法来获取该对象的 `TrPr` 属性。但是,您提到返回值为 `null`,这意味着 `getTrPr()` 方法返回了空值。

有几种可能的原因导致返回值为 `null`:

1. **数据缺失**:可能是因为在源行的 `TrPr` 属性中没有设置任何值,或者该属性未被初始化。这可能是由于数据输入错误或其他原因导致的。

2. **调用顺序错误**:在调用链中的某个地方,可能存在一些错误的调用顺序或逻辑错误,导致 `TrPr` 属性未正确设置或初始化。

3. **程序错误**:这可能是程序或库中的一个错误,导致 `getTrPr()` 方法无法返回正确的值。这可能需要查看相关的文档或源代码来确定是否存在问题。

为了更好地理解为什么返回值为 `null`,您可能需要查看相关的文档、调试代码或进一步检查数据。如果您能提供更多的上下文信息或代码片段,我可以帮助您更详细地解决这个问题。

尝试设置文档该行的行高等属性,试错法:
[POI踩坑记]POI复制行后进行document merge时报错:org.apache.xmlbeans,XmlException: error: 与元素类型
设置完之后,然后进行使用就解决

正文完
 2
裴先生
版权声明:本站原创文章,由 裴先生 2023-07-28发表,共计1120字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(一条评论)
ayUXIsqKZVDvGoSc 评论达人 LV.1
2024-03-22 16:10:10 回复

POI复制行

 Windows  Chrome  比利时
本站勉强运行: