问题标签 [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.
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)如果没有[更好的方法],我做错了什么导致它破坏了我试图写入的所有数据。
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)
我的类路径中有以下库,
这是我收到此错误的代码
看起来我缺少一个库,但我想我已经添加了我需要的一切。我在这里想念什么?
java - 如何将 XDDF 图表添加到特定段落运行(即表格中的单元格)?兴趣点 4.0.1
我想将图表添加到 XWPFDocument 中的特定表格单元格。我想要表格单元格中的图表,以便我可以确保与以后添加的其他元素对齐。那么,
如何在不将其添加到文档的情况下创建 XWPF/XDDF 图表(例如,不使用 document.createChart())?
如何获取该图表并将其添加到特定段落/运行(例如,在表格单元格中创建的那个)?
已经尝试过:
- 创建一个图表镜像XWPFDocument.createChart()中的代码
- 将XWPFRun.addChart()与我使用的 R elationPart.getRelationship.getId()一起使用
- 到达表格的具体位置后使用document.createChart()
- 试图制作图表 - > XDDFDrawing 并将其添加到run.getCTR.addDrawing的运行中......我不认为它会这样吗?
/代码示例
当我通过 r2.addChart() 添加图表时,什么都没有显示?所以也许我没有正确创建图表?或者我没有正确地将它添加到运行中?
是否可以将图表转换为绘图?
- 段落
- 跑
- 绘画?
- 图表?
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 并从字节数组的输入流中重新加载它;这解决了问题。
java - 如何在apache POI中重复标题(灰色区域)
我正在使用 apache POI 创建表。我需要重复单词中的标题。
这个问题是该问题的后续问题:How to split the row in apache POI header。在接受的答案中给出了使用的代码。
apache-poi - 当表超过apache poi word中的下一页时需要创建一个新页面
当表超过apache poi中的下一页时需要创建一个新页面
apache-poi - 水平合并单元格时需要从右边去掉边框
我正在尝试将边框添加到合并的单元格,但使用下面的代码行是不可能的: