Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ApachePOI创建excel图表_Java_Apache_Excel_Charts_Apache Poi - Fatal编程技术网

Java 使用ApachePOI创建excel图表

Java 使用ApachePOI创建excel图表,java,apache,excel,charts,apache-poi,Java,Apache,Excel,Charts,Apache Poi,我需要使用ApachePOI库从Java代码创建excel工作表,其中包含条形图、折线图等图表。 可能吗? 我找不到任何有用的代码示例 除了POI library for Java之外,还有其他替代方法吗?这将非常复杂,因为您需要在Excel文件中找到创建图表所需的内容。我会走另一条路 创建一个Excel文件,其中包含一个宏,用于为某些数据创建条形图等(以通常的方式使用Excel)。然后使用ApachePOI创建一个包含所需数据的文件,并从Java启动Excel,执行创建图表的宏 除了用于Jav

我需要使用ApachePOI库从Java代码创建excel工作表,其中包含条形图、折线图等图表。 可能吗? 我找不到任何有用的代码示例


除了POI library for Java之外,还有其他替代方法吗?

这将非常复杂,因为您需要在Excel文件中找到创建图表所需的内容。我会走另一条路

创建一个Excel文件,其中包含一个宏,用于为某些数据创建条形图等(以通常的方式使用Excel)。然后使用ApachePOI创建一个包含所需数据的文件,并从Java启动Excel,执行创建图表的宏

除了用于Java的POI库之外,还有其他替代方案吗

还有一些其他的库,但我不确定他们是否能写出像图表这样的东西

如果可以使用较新的Office版本(使用基于XML的格式文件的版本),则可以使用不同的方法:

  • 使用较新版本的Office创建Excel文件,其中包含所需的图表和一些虚拟数据
  • 解压缩该excel文件并从内部提取XML文件。最感兴趣的是文件xl\worksheets\sheet1.xml xl\worksheets\sheet2.xml或xl\worksheets\sheet3.xml(取决于使用的工作表)
  • 看一下文件格式(它比使用POI更复杂),但是识别您之前输入的“虚拟”数据应该不会那么难
  • 使用Velocity或FreeMarker将该xml文件转换为模板(通过使用变量和宏替换虚拟数据,从而产生相同的结果)
  • 编写一个小程序(只需几行),它接收真实数据,与模板合并,并将所有内容打包回zip,但将*.xlsx扩展名放回zip

我知道上面的步骤看起来有点复杂,但如果您没有太复杂的Excel文件,它应该比看起来更简单。

您只能使用Excel模板保存带有POI的图表。 这意味着您创建了一个包含图表的Excel模板文件,并将图表的数据源链接到一个定义的名称,然后您可以从POI加载模板文件,并使用代码更改定义的名称。
当前POI不支持从头开始创建图表。

该线程看起来很旧,我不知道您是否已经找到了一种方法或仍在寻找一种方法

但我会这么做。有一个免费的图书馆叫。您可以使用它生成JPG或PNG文件,然后在使用ApachePOI创建excel文件时将其插入其中

但这种方法的缺点是,当您更改电子表格中的数据时,图形中的数据不会像Excel那样动态更改。这是我无法忍受的

所以我现在要做一些研究。我敢肯定,既然有人问了这个问题,那么在ApachePOI中一定会添加一个特性或其他优雅的操作方式。如果我发现了什么,我一定会把我的发现贴在这里

----更新----


在我持续大约一个小时的研究中,我只能找到一个名为SmartXLS的合适库(请用谷歌搜索,我无法发布链接,因为我是一个新手,垃圾邮件预防机制已经启动),它与我将要使用的非常接近。您可以通过程序生成excel和图表。该网站非常简单,我找不到任何许可信息,所以我假设它是免费的个人和商业使用。我可以毫无问题地下载图书馆。我还没有用过它。试一试,让我们知道它是如何运作的。

在poi-3.8中,对图表的支持似乎即将到来

特别是,这里是

  • 我有JSON格式的数据和带有宏的.xlsm模板文件。-excel中不需要图表、数据或范围名称

  • 每次需要创建带有图表的工作表时,都会克隆模板工作表,将所需的图表类型放置在z1处,并将插入的默认折线图更改为相应的图表类型。从z1中删除图表类型以避免多次执行


希望能有帮助

嗨,DJ,谢谢你的快速回复。事实上,我的做法和你建议的完全一样。但在这种情况下,宏的执行速度在数据量非常大的情况下非常慢,这是我所担心的。宏使用中也存在安全问题。因此,我想使用POI库创建图表。可能吗?感谢和问候,阿比纳维我相信是的,但是你可能需要弄清楚包含图表的文件到底是什么样子的。我仍然会使用Excel创建一个示例,然后使用POI复制它。xlsx文件的完整规范是可用的,但非常复杂。嗨,阿德里安,非常感谢你的快速回复和宝贵的信息。这种方法似乎是合理的,但没有什么值得关注的:1。我想同时支持Excel2003和2007。2.用于图表生成的xml很难理解。是这些问题的任何其他替代方案。您还提到“还有其他一些库,但我不确定是否可以编写类似于图表的东西。”-->您能推荐一些(免费的)可以提供此功能的库吗。再次感谢您,AbhinavA除了许多Java-to-COM桥接器之外,还有其他一些excel库,它们允许直接从Java使用excel安装,例如(但也有许多其他的)。另一个选择是使用OpenOffice(因为从Java编写API非常容易),并让OpenOffice将结果导出到相应的Excel格式。你好,Liya,非常感谢您的回复。我已经按照你建议的方式试过了。模板excel文件(带em)中需要动态命名范围(使用偏移量函数)