java - 如何使用 apache POI 复制包含图表的幻灯片?

标签 java apache-poi powerpoint xslf

亲爱的大家,

我正在使用 Apache POI,我想复制一张包含代码中的多个图表的幻灯片。

当幻灯片上没有图表时,下面的代码(受到 https://poi.apache.org/slideshow/xslf-cookbook.html#Merge 的启发)可以正常工作。

不幸的是,这种方法似乎没有重复图表:当我尝试打开生成的文件时,Powerpoint 检测到问题,尝试修复它,但失败了,并且我得到了空幻灯片。

我已经检查了底层 XML 文件(使用 Open XML SDK),图表本身(在文件夹 /ppt/charts 中)似乎不重复,并且关系文件 (文件夹 /ppt/slides/_rels 中)未完全更新。

这是我当前的代码:

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

// Duplicate slide
XSLFSlideLayout layout = slide.getSlideLayout();
XSLFSlide newSlide = slideshow.createSlide(layout);
newSlide.importContent(slide);

// Save updated slideshow
FileOutputStream fileOutputStream = new FileOutputStream(outputFilePath);
slideShow.write(fileOutputStream);
fileOutputStream.close();

你知道如何克隆幻灯片及其图表吗?

非常感谢,并致以诚挚的问候!

最佳答案

你不能。我试了又试,问题是复制不处理图像或图表。

我必须通过脚本手动复制文件。步骤如下:

  • 找到幻灯片文件
  • 复制它
  • 在 XML 文件中查找图表对象,并记下关系 ID
  • 在关系文件中,检查关系 ID 指定了哪个文件
  • 复制此文件
  • 您还必须复制新幻灯片的关系文件,并更新名称
  • 新幻灯片不可见,您必须更新presentaion.xml
  • 请注意:如果您希望 PPTX 与 Microsoft Powerpoint 配合使用,您还必须复制关联的 Excel 工作簿(请参阅图表的关系文件)

关于java - 如何使用 apache POI 复制包含图表的幻灯片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35431714/

相关文章:

Java 和 Microsoft Access sql select 命令与二分搜索

serialization - Apache POI XWPFDocument 对象序列化

vba - AfterShapeSizeChange 应用程序事件未在 PowerPoint 2013 中触发

ms-office - Windows 上的 Powerpoint 内容加载项仅以幻灯片放映模式显示图像,而不是 Web 应用程序

java - Java Axis2 WebService 中的文件路径问题

java - 这种在Spring Boot应用程序中启动无限循环的方式有什么问题吗?

Apache POI : Partial Cell fonts

java - 我可以使用从 Excel 行读取的不同变量集循环遍历我的程序吗?

python - python windows 从 pptx、ppt、docx、doc 和 msg 文件中提取文本

java - 不使用数组生成并打印数字的所有 "anagrams"的程序