问题标签 [xslf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
718 浏览

apache-poi - 创建新的幻灯片版式并从其他 powerpoint 幻灯片版式复制内容

这是我的用例:

我有两个 powerpoint 文件。我想将所有幻灯片模板从一个 powerpoint 复制到另一个。我在 MasterSlide 中找不到像 createTemplate() 这样的 API,所以为了做到这一点,我使用模板之一(存在于同一个 powerpoint 中)PackagePart 创建一个新的 XSLFSlideLayout,然后使用 importContent() 来复制来自其他 powerpoint 的模板。这是它的简短版本:

调用 importContent 时它会中断:

java.lang.IllegalStateException:找不到名称的 SlideMaster:/ppt/slideLayouts/slideLayout1.xml - 内容类型:org.apache.poi.xslf.usermodel.XSLFSlideLayout 的 application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml .getSlideMaster(XSLFSlideLayout.java:98) at org.apache.poi.xslf.usermodel.XSLFSlideLayout.getMasterSheet(XSLFSlideLayout.java:105) at org.apache.poi.xslf.usermodel.XSLFSlideLayout.getMasterSheet(XSLFSlideLayout.java:36 ) 在 org.apache.poi.xslf.usermodel.XSLFSimpleShape.getXfrm(XSLFSimpleShape.java:133) 在 org.apache.poi 的 org.apache.poi.xslf.usermodel.XSLFShape.fetchShapeProperty(XSLFShape.java:307)。 org.apache.poi.xslf.usermodel.XSLFShape.copy(XSLFShape.java:137) 在 org.apache.poi.xslf 中的 xslf.usermodel.XSLFShape.setAnchor(XSLFSimpleShape.java:169)。org.apache.poi.xslf.usermodel.XSLFTextShape.copy(XSLFTextShape.java:588) 中的 usermodel.XSLFSimpleShape.copy(XSLFSimpleShape.java:711) org.apache.poi.xslf.usermodel.XSLFSheet.importContent(XSLFSheet.爪哇:372)

我正在使用 poi-3.15。任何线索都会有很大帮助。

0 投票
1 回答
427 浏览

java - XSLFGroupShape 不包含其子形状

我正在使用 Apache POI 3.16(撰写本文时的最新版本)。在下面的代码片段中,我创建了一个 XSLFGroupShape,然后我用它来创建一堆子形状:

问题如下:在生成的 PowerPoint 文件中,组位置和尺寸似乎未初始化(我选择了内容被像素化的矩形;整个矩形及其内容是单个 XSLFGroupShape;注意组的操纵器在幻灯片的左上角): PowerPoint 屏幕截图显示未初始化的组的操纵器

我的代码中是否缺少任何内容?有没有办法规避或解决这个问题?

0 投票
1 回答
489 浏览

apache-poi - 如何使用 apache poi 检索 pptx 幻灯片名称

Powerpoint 幻灯片具有可通过 VBA 访问和修改的内部名称。参见例如Powerpoint:手动设置幻灯片名称

我想通过 apache poi 访问该名称。我试过了:

但如果幻灯片名称只有默认名称,则只能以这种方式获取空字符串。

在 Apache POI 中获取(甚至设置)pptx 文件的幻灯片名称的正确方法是什么?

0 投票
1 回答
1212 浏览

java - 使用 apache poi 有项目符号点时更正文本对齐

我正在使用 apache poi xslf 创建一个文本框,然后在其中添加一个项目符号点。问题是当项目符号点是多行文本时,它会像这样添加

- 文本分析、nGram、朴素贝叶斯文本分类器,用于识别对话的性质、情绪和投诉风险

在上面的项目符号对话中应该与项目符号行中的单词文本对齐,即像这样的文本对齐

  • 文本分析、nGram、朴素贝叶斯文本分类器,用于识别
    对话情绪的性质和投诉风险。

以下是代码

任何帮助表示赞赏。谢谢。

0 投票
1 回答
735 浏览

java - java - 带有多个图表的 Apache POI 绘图区

我正在尝试使用 PowerPoint 文件作为模板来生成另一个替换购物车数据的 powerpoint。为了使模板的外观尽可能相似,我只是尝试替换我需要替换的数据,从CT*Ser图表的第一个复制所有其他数据。当绘图区域内只有一个图表时,大多数图表(目前我对饼图、条形图和折线图感兴趣)都可以正常工作。

当绘图区域有多个图表时(在我的例子中,一个有多个系列的 BarChart 和一个只有一个的 LineChart),看起来有问题,Microsoft PowerPoint 无法打开文件或其中的一部分,因为它似乎是被管理的。

为此,我为每个图表和图表类型执行以下代码(图表是我用来在模板文件中保留引用的对象)。

总结:

  1. 克隆第一个 CT*Ser;
  2. 替换idx、order和tx;
  3. 如果 CT*Ser 具有内部带有 DLbl 标记的 DLbl,我将删除 DLbl,然后将它们添加,并将 delete 设置为 true;
  4. 修改猫;
    1. 如果类别都是数值,我使用 NumRefs,否则使用 StrRefs;
  5. 修改值;
  6. 删除以前的系列

我也更改了支持 Excel 资源,仅使用构建图表的数据(绘图区域中每个图表一张)。我也检查了对单元格和单元格范围的引用,它们没问题。

我使用以下软件检查了生成的文件,并报告了结果:

  • Libre Office(按我的预期工作)
  • Onlyoffice(有效,但似乎不支持每个绘图区域的多个图表?)
  • Microsoft Powerpoint 桌面(打开文件时出错,尝试恢复,但失败并且不会从错误的幻灯片上加载幻灯片内容)
  • Microsoft Powerpoint online(不打开文件)

是否有一种相对简单的方法来验证 powerpoint 文件并找到阻止文件与 Powerpoint 一起使用的错误?有什么方法可以可靠地诊断这些问题吗?在Linux上工作?

模板文件已使用 Powerpoint 创建。如果我不报告软件版本,我很抱歉,但我不记得它们(Powerpoint 不在我的电脑上)。

请帮助我了解问题所在,因为我实际上开始感到愚蠢。任何建议将不胜感激。太感谢了。

0 投票
1 回答
663 浏览

java - 我正在尝试更改幻灯片中折线图的值,但无法使用 POI

我正在使用 Apache POI 4.01 并尝试使用带有单个折线图作为模板的 powerpoint 幻灯片,然后使用它来生成图表中包含一些不同值的新幻灯片,但我得到的是相同的幻灯片复制而没有任何值更改. 请帮忙。

我正在使用PowerPoint幻灯片中的简单折线图尝试以下代码。

没有错误但图表值保持不变,实际需要的结果是具有不同值的折线图。

0 投票
0 回答
240 浏览

java - 使用 Apache Poi 从头开始​​创建图表的问题

当我从头开始创建图表并将其添加到使用 Apache Poi 的 PowerPoint 中的幻灯片时,XSLFGraphicFrame会创建相应的形状并将其添加到 XML 中,但它不会添加到getShapes()幻灯片中的列表中,其他情况会正确发生形状类型,有没有办法将依赖树提升到GraphicalFrame并获取相应的XSLFShape对象并手动添加它?

示例: 假设我有一个XMLSlideShow我们称之为 ppt 的对象,ppt 有一个XSLFSLide对象表示它在第一个位置的幻灯片。所以现在这张幻灯片有一些形状。假设这些是 2 个 XSLFTextBox,我们可以使用方法对其进行迭代getShapes()

因此,如果我们从头开始创建图表:

但是,如果我们遍历 XML 对象 bean,我们实际上可以找到似乎没有添加到 getShapes 列表中的图形框架对象。

如何通过首先获取相应的形状来手动执行此操作?

编辑:我设法通过变通方法解决了这个问题,因为编辑源代码和用 ant+gradle 等重建 lib 的工作量太大。ppt 可以从流中加载,这是通过读取 xml 来完成的文件,它正确列出了图形框架。我在 ByteArrayOutputStream 中编写了 ppt 并从字节数组的输入流中重新加载它;这解决了问题。

0 投票
1 回答
115 浏览

java - 调整 XSLFChart 的大小

XSLFChart在 a上创建 a时XSLFSlide,我似乎无法使锚定按预期工作。我生成图表如下

但是当我打开 Powerpoint 时,图表在左上角被卷起,就好像它被Rectangle一个高度和宽度为 0 的 at (0, 0) 锚定。使用函数的另一个重载创建图表 ( addChart(XSLFChart)) 也在角落创建它,但有一些高度和宽度。

0 投票
0 回答
25 浏览

java - XSLF :- 在 PPT 中嵌入 excel 文件

我可能会在这里问一个重复的问题。我阅读了有关 OLE 嵌入的多个答案,但无法为我的问题找到正确的解决方案。

我的问题 我想创建一个 PPTX 文件并将 excel 嵌入其中一张幻灯片。我找到了嵌入文件的 HSLF 解决方案,但它不适用于 Office 2016。所以我正在寻找一些使用 XSLF 将文件嵌入和 excel 文件到 PPTX 幻灯片的解决方案。

我们可以使用 HSLF 创建/修改 PPTX 演示文稿吗?

0 投票
1 回答
112 浏览

java - 如何从 apache poi XSLF 获取文本框的线宽?

从 pptx 文件中获取带有 apache poi 5.0.0 的简单文本框的线宽的正确方法是什么?我用 maven apache poi、poi-ooxml 和 poi-scratchpad 创建了一个小项目。

当我创建一个test.pptx用三个文本框命名的 pptx 时

  • 无边框(宽度为 0.0)
  • 默认边框(宽度为 0.75)
  • 宽度为 2.0 的边框

然后以下代码输出

  • 无边界:line: 0.0, null
  • 默认:line: 0.0, java.awt.Color[r=91,g=155,b=213]
  • 边框 2.0:line: 2.0, java.awt.Color[r=91,g=155,b=213]

在文档中说宽度0.0是没有边界的。但是,当两者都返回时,我如何区分无边框和默认边框0.0。这不应该从颜色为空。