使用POI-3.10-FINAL修改PowerPoint表



我一直有使用POI-3.10-FINAL编辑PPTX不完全工作的问题。我注意到我能够成功地添加新的幻灯片,但是对形状(在本例中是表)的修改没有反映在输出的PPTX文件中。

我能够通过从poi-ooxml-schemas-*.jar切换到ooxml-schemas-1.1.jar来修复它,但由此产生的PPTX文件似乎已损坏:PowerPoint 2007无法打开它,但PowerPoint 2010首先修复它,然后正确打开它。

在调查这个问题时,我注意到"docProps/app.xml"没有被正确更新(我假设PPTX中的其他文件也没有被更新)。

任何想法?

我已经能够使用Microsoft的OpenXml SDK正确地排除故障并修复我的POI问题(参见OpenXml SDK)。SDK帮助您扫描PPTX文件(或任何其他OpenXml文档),并编译它找到的所有错误的列表。

在我的例子中,我将一个表格单元格的文本值设置为null。接着,POI在最上面的幻灯片标签上生成了xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"声明,并在单元格的标签中使用了xsi:nil="true",这是PowerPoint绝对不喜欢的。

另一个问题是,我正在修改在我的表中创建新的行和列。为了简化代码,无论何时对单元格执行任何操作,我都要确保将边框信息设置为黑色,宽度为1,填充颜色为白色。由于一些奇怪的原因,POI似乎没有取代边界信息,而是附加了它,这使得PPTX有2个冲突的值而不是1(我必须进一步调查这一点,但在试图设置它们之前检查边界和填充信息,肯定解决了我的问题)。

这些问题很容易解决,一旦我弄清楚了。

最新更新