当前位置: 首页 > 知识库问答 >
问题:

如何用apache-poi 3.9修改pptx文件中表格的单元格值?

钱焕
2023-03-14

我正在尝试修改pptx文件中某个表格的单元格值。保存文件,修改不会被应用。

下面是使用的代码:

FileInputStream is = new FileInputStream("C:/Report_Template.pptx");
XMLSlideShow ppt = new XMLSlideShow(is);
is.close();

ppt.getPageSize();
for(XSLFSlide slide : ppt.getSlides()) {
    for(XSLFShape shape : slide){
        shape.getAnchor();
        if (shape instanceof XSLFTable){
            XSLFTable t = (XSLFTable) shape;
            List<XSLFTableRow> r = t.getRows();
            for (int i = 1; i < r.size(); i++) {
                String text = r.get(i).getCells().get(1).getText();
                if(text.contains("#ID")) {
                    r.get(i).getCells().get(1).setText("20131028152343");
                }
            }
        }
    }
}
FileOutputStream out = new FileOutputStream("C:/Report.pptx");
ppt.write(out);
out.close();

文件C:/Report.pptx不包含字符串“20131028152343”,而是“#ID”。有人能帮我吗?

共有1个答案

唐俊爽
2023-03-14

我对表格(使用POI 3.10)也有同样的问题:我无法修改它们,有时文件已损坏(我无法使用LibreOffice打开它)。

我刚刚替换了jar poi-ooxml-schemas-*。jar和< code > oo XML-schemas-1.1 . jar (您可以在Maven Central上找到它),现在它可以工作了。

 类似资料:
  • 各位, 我们有一个与excel更新的可伸缩性有关的需求。 例如,我们有一个Excel工作簿,有10个工作表,每个工作表都有大量的数据。 现在我们要做的是用“新值”替换其中一个单元格。 但是在Apache POI中,我们理解了我们必须加载整个“工作簿”,即使我们必须修改excel表单中的数据。这消耗了巨大的内存,是不可接受的。 是否有任何单元格级读写(立即刷新)工具或API用于Excel。

  • 我需要调整条件格式的范围。 读取Excel文件(.xlsm、.xlsx),修改条件格式的范围,并将其另存为新文件。 所以我只是获取所有条件格式对象,为它们获取范围对象,并通过调用修改范围。 问题是这个修改不存在于结果文件中。实际上,sheet.getSheetConditionalFormatting()在刚刚完成操作之后没有任何变化。 是否需要“提交”对的更改?

  • 我需要用Java和Jsoup解析一个表,并根据它的值改变单元格的颜色。这就是html表格的外观,也是单元格颜色需要定义的方式 我写了一个脚本,可以准备好单元格的值并从中更改文本,但是我无法也更改颜色。 这是我收到的错误:

  • 我试图从excel文件中读取所有数据,其中也有一些公式单元格,但我不知道哪个单元格是公式单元格。如何读取单元格中的所有值,而不考虑单元格的类型。 我的代码看起来像这样 我得到的公式单元格值为0

  • 问题内容: 有谁知道我如何防止表格单元格中的文本换行?这是用于表头的,其标题比其下的数据长很多,但是我只需要在一行上显示即可。如果列很宽也可以。 我的(简化的)表的HTML如下所示: 标题本身包装在标记内的div中,原因与页面上的javascript有关。 该表将标题与多行包装在一起。这似乎仅在表足够宽时才会发生,因为浏览器试图避免水平滚动。不过,就我而言,我想水平滚动。 有任何想法吗? 问题答案

  • 我正在使用Java和Apache POI创建一个带有表的word文档。 我可以很容易地创建表格,用不同的宽度设置每一列,然后合并单元格以产生所需的效果(见下面的图像)。然而,当我打开word文档时,一些单元格已经被调整,以便它们的边缘对齐。我发现,在表的开头添加一个额外的行并保留所有单元格不合并将保持其余行不变,但稍后使用table.removerow(0)删除该行;影响其余行。如果打开word文