我们在项目中使用Apache POI(3.9版)来创建PowerPoint (pptx)文件。但是,其中一些变得非常大(2000张幻灯片,每张幻灯片上有许多形状),因此生成会产生< code>GC开销限制超出错误。
堆空间大小不在我们的控制范围内,因为我们只为 RCP“父”应用程序开发一个插件。
有没有办法写(和读)这么大的文件?我们对Excel文档使用了流式API,并取得了巨大的成功,但是没有针对pptx的流式API。
我的第一个想法是将大文件(在创建时)拆分成更小的块。但是,无法将这些文件合并到一个大文件中(再次获取GC错误,因为POI现在读取大文件)
我在谷歌上搜索了很多好的解决方案,但没有成功;不幸的是,pptx Support目前在POI中仅处于Beta状态。
有人在这里有建议吗?
我的解决方案:遗憾的是,我找不到一个不需要做大量xml编辑的解决方案。对于所有有同样问题的人,一个小的路线图可以将B的内容合并到演示文稿A中。
Content_Types.xml
和presentations.xml
presentations.xml
中的新条目添加到presentations.xml.rels
slideX.xml.rels
以便它们引用正确的内容基本上,请确保将包含用户生成内容(幻灯片,注释,布局)的所有文件复制到A中,并重命名以避免冲突。然后搜索所有 *.xml.rels
演示文稿.xml
content_types.xml
并添加/修改 rId 内容
您可以尝试使用以下方法在POI之外合并单独的幻灯片:
问题内容: 如何使用框架有效地从大文件读取并将大数据写入文件。 我工作,并和曾尝试类似如下: 谁能告诉我,如果我的文件大小超过2 GB,我应该遵循相同的步骤吗? 如果大量的书面操作,我想在写作时做类似的事情,该怎么办? 问题答案: 请注意,您可以像示例代码那样简单地用于复制文件,只是速度更快,而且仅一行代码。 否则,如果您已经打开了两个文件通道,则可以使用 将该通道的全部内容传输到该通道。请注意,
我正在使用Java开发一个web应用程序,在这里我有一个方法可以读取。使用apache poi的xlsx文件: 该方法工作正常,但是该方法处理具有数千行记录的文件的可能性有多大,例如,大约2530万行。当处理一个大文件时,我采取以下异常: 我需要知道如何避免这种错误。例如,如果有,请读取并处理该文件。xlsx 1000至1000线,或其他解决方案。
我正在尝试编写一个相当大的XLSX文件(4百万个单元格),但我有一些内存问题。 我不能使用SXSSF,因为我还需要读取模板中的现有单元格。 我能做些什么来减少内存占用吗<或许可以将流式阅读和流式写作结合起来?
我正在使用XSLFPowerPointExtractor从pptx文件中提取文本。然而,pptx文件中的所有文本都以单个字符串的形式返回给我。我可以单独获取每张幻灯片上的文本吗?我对这个概念完全陌生,所以请给出详细的答案。
问题内容: 我有一个非常大的文本文件(45GB)。文本文件的每一行包含两个空格分隔的64位无符号整数,如下所示。 4624996948753406865 10214715013130414417 4305027007407867230 4569406367070518418 10817905656952544704 3697712211731468838 … … 我想读取文件并对数字进行一些操作。
我想阅读一个excel,并根据一些条件写到相同的excel。例如 现在我的要求是 1)要根据列名读取数据,例如“名称”并获取该列下的所有数据 2)以同样的方式基于列名说出' name '我想再添加一行数据ie数据应该以下面的方式在相同的excel文件中添加新的一行 如何使用Apache POI执行此操作。 有人能给我举个例子吗?我想读/读同一个excel,不想创建一个新的excel。 提前感谢。