2

亲爱的大家,

我正在使用 Apache POI,并且正在尝试使用 Powerpoint 报告自动执行一些任务。更准确地说,我想通过代码更新 .pptx 演示文稿中的数据,包括嵌入式 Excel 电子表格(显示为表格)。

到目前为止,我已经设法更新了嵌入的电子表格本身,但是 pptx 演示文稿没有“刷新”:当我打开文件时,旧值是可见的,但是当我双击网格时会显示新值(进入“编辑”模式)。

根据 Gagravarr 的评论这篇文章Unable to see Apache POI updated data value in pptx in pptx without editing,这种行为是意料之中的:底层文件确实被更新了,但预渲染的版本仍然存在。

因此,我想“刷新”预渲染版本:你知道我如何使用 Apache POI 做到这一点吗?(或者至少“zap”这个预渲染的版本,并希望当我打开幻灯片时 Powerpoint 会重新渲染它)。

我不熟悉 POI 用户列表档案,所以如果答案在某个地方,我很抱歉。非常感谢,最好的问候!

这是我当前的代码:

// Open SlideShow
FileInputStream fileInputStream = new FileInputStream(sourceFilePath);
XMLSlideShow slideShow = new XMLSlideShow(fileInputStream);
fileInputStream.close();


// Get PackagePart (shortened version)
PackagePart excelEmbedding = slideshow.getAllEmbedds().get(3);


// Update underlying spreadsheet (shortened version)
InputStream is = excelEmbedding.getInputStream();
XSSFWorkbook workbook = new XSSFWorkbook(is);    

XSSFRow row = sheet.getRow(1);
XSSFCell cell = row.getCell(3);
cell.setCellValue("TEST");

OutputStream os = excelEmbedding.getOutputStream();
workbook.write(os);
os.close();
workbook.close();


// Save changes
FileOutputStream fileOutputStream = new FileOutputStream(targetFilePath);
slideShow.write(fileOutputStream);
fileOutputStream.close();
4

0 回答 0