问题标签 [apache-poi-4]

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 投票
1 回答
1184 浏览

java - 根据单元格的内容将新行插入 Apache POI 电子表格

注意:我到处搜索,这不是重复的问题。

我正在尝试根据同一行中单元格的内容,使用 Apache POI (poi-4.1.0) 和 Java 在电子表格中创建/插入固定数量的“新”行 - 请参见下图( “|”表示分栏符):

1 富 | 1001, 1002, 1003 |是
2 小节 | 1010 |是
3 Slf | 2500、1500、5200 |是

本质上,会发生什么,然后我将在第 1 行和第 2 行之间插入两个新行,并在第 3 行之后再次插入,复制源行中的所有数据,除了在列中没有三个值(或者可能有很多值)二,只有一个 - 见下图(“|”代表分栏):

1 富 | 1001 |是
2 Foo1 | 1002 |是
3 Foo2 | 1003 |是
4 酒吧 | 1001 |是
5 Slf | 2500 |是
6 Slf1 | 1500 |是
7 Slf2 | 5200 |是

此过程将重复,仅在具有多个值的单元格上重复,直到文件中的所有行都已被读取和处理。我应该注意,新行将附加在同一个文件中。

这是我的代码(我使用此页面上的代码作为模板并尝试对其进行更新以匹配我正在使用的 POI 的当前版本):

当我运行代码时,它运行正常并说它已成功完成,但是,当我尝试打开修改后的文件时,它抱怨数据损坏并从文件中删除除两行之外的所有行(如果我允许 MS Excel 尝试修复它)。我也尝试将输出重定向到不同的文件,但结果是相同的 - 它破坏了数据并且只显示了两行,它们之间有一个空白行。

所以我的问题是/是这样的:1)有没有更好的方法来做我想做的事情?2)如果没有[更好的方法],我做错了什么导致它破坏了我试图写入的所有数据。

0 投票
2 回答
6304 浏览

java - Apache POI - java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/InputStreamStatistics

我正在尝试使用 Apache POI 阅读 word 文档(.docx),它给了我这个错误......

org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.(ZipArchiveThresholdInputStream.java:63) 的 org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.(ZipArchiveThresholdInputStream.java:63) 的线程“AWT-EventQueue-0”中的异常 java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/InputStreamStatistics。 apache.poi.openxml4j.opc.internal.ZipHelper.openZipStream(ZipHelper.java:178) 在 org.apache.poi.openxml4j.opc.ZipPackage.(ZipPackage.java:104) 在 org.apache.poi.openxml4j.opc .OPCPackage.open(OPCPackage.java:301) at gui.CryptoGUI.selectFileButtonActionPerformed(CryptoGUI.java:645) at gui.CryptoGUI.access$1100(CryptoGUI.java:27) at gui.CryptoGUI$11.actionPerformed(CryptoGUI.java: 321) 在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 在 javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 在 javax。swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 在 javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 在 com.jtattoo .plaf.BaseButtonListener.mouseReleased(BaseButtonListener.java:65) at java.awt.Component.processMouseEvent(Component.java:6535) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component。 processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java :2294) 在 java.awt.LightweightDispatcher 的 java.awt.Component.dispatchEvent(Component.java:4713)。retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java :2280) 在 java.awt.Window.dispatchEventImpl(Window.java:2750) 在 java.awt.Component.dispatchEvent(Component.java:4713) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 在 java .awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security .AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.security。ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController .doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java :201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java .awt.EventDispatchThread。泵事件(EventDispatchThread.java:93)在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

我的类路径中有以下库,

在此处输入图像描述

这是我收到此错误的代码

看起来我缺少一个库,但我想我已经添加了我需要的一切。我在这里想念什么?

0 投票
2 回答
573 浏览

java - 如何将 XDDF 图表添加到特定段落运行(即表格中的单元格)?兴趣点 4.0.1

我想将图表添加到 XWPFDocument 中的特定表格单元格。我想要表格单元格中的图表,以便我可以确保与以后添加的其他元素对齐。那么,

  • 如何在不将其添加到文档的情况下创建 XWPF/XDDF 图表(例如,不使用 document.createChart())?

  • 如何获取该图表并将其添加到特定段落/运行(例如,在表格单元格中创建的那个)?

已经尝试过:

  1. 创建一个图表镜像XWPFDocument.createChart()中的代码
  2. XWPFRun.addChart()与我使用的 R elationPart.getRelationship.getId()一起使用
  3. 到达表格的具体位置后使用document.createChart()
  4. 试图制作图表 - > XDDFDrawing 并将其添加到run.getCTR.addDrawing的运行中......我不认为它会这样吗?

/代码示例

当我通过 r2.addChart() 添加图表时,什么都没有显示?所以也许我没有正确创建图表?或者我没有正确地将它添加到运行中?

是否可以将图表转换为绘图?

这显示了我试图模仿的 XML(从另一张图片复制)

  1. 段落
  2. 绘画?
  3. 图表?

这是预期的输出

0 投票
1 回答
1343 浏览

java - 如何拆分apache POI标头中的行

我正在尝试使用 apache poi 创建表 ind Microsoft Word。但我无法为表格生成附加的标题。有什么建议,我可以使用 apache poi 创建附加的标题吗?

在此处输入图像描述

我能够创建整个表,但出现的最后 2 列(合并和拆分),我需要在 java 中做。

对于列的合并,我使用了以下代码:


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 回答
1353 浏览

java - Apache-poi:自动设置合并单元格的大小并使字体加粗

我是新手,只是玩弄 apache-poi 来生成一个带有一些模拟数据的 excel 表,这是我的课,我对一些事情感到震惊,有什么最佳实践吗?在此处输入图像描述

  1. 自动设置行中合并单元格的大小。
  2. 字体粗体-> 对于第一行中的所有单元格。

班级:

}

0 投票
1 回答
800 浏览

java - 如何在apache POI中重复标题(灰色区域)

在此处输入图像描述

我正在使用 apache POI 创建表。我需要重复单词中的标题。

这个问题是该问题的后续问题:How to split the row in apache POI header。在接受的答案中给出了使用的代码。

0 投票
0 回答
72 浏览

apache-poi - 当表超过apache poi word中的下一页时需要创建一个新页面

当表超过apache poi中的下一页时需要创建一个新页面

0 投票
2 回答
8293 浏览

java - APACHE POI 4.1:从十六进制代码设置单元格背景颜色

我尝试了在堆栈溢出上发布的不同解决方案,以将背景颜色应用于 Apache POI 生成的单元格,但没有任何效果。

我正在做类似的事情:

我认为我的代码中的一切都很好,但是每个像这样样式的单元格都会导致黑色背景。 黑细胞

我对没有字段的调试结果期间的“DefaultIndexedColorMap”实例有一些疑问:

代码调试器

在这一点上,我不确定该怎么做才能解决。其他帖子中的每个人似乎都在工作,但我仍然得到深色背景而不是黄色。

有什么建议么?提前致谢!

0 投票
0 回答
65 浏览

apache-poi - 水平合并单元格时需要从右边去掉边框

我正在尝试将边框添加到合并的单元格,但使用下面的代码行是不可能的: