如何将图表从Excel(或Calc)自动导出到PNG

如何将图表从Excel(或Calc)自动导出到PNG,excel,charts,export,openoffice-calc,Excel,Charts,Export,Openoffice Calc,问题: 我正在开发一个web应用程序,它将数据从数据库导出到Excel,包括图表,这是导出的首要原因 现在,我希望图表也可以在网页上看到,而无需导出数据和打开下载的excel文件。当然,这可以通过JS库来完成,但是由于图表非常复杂,我想重新使用现有的导出到excel,或者重新编写它,现在是在JS中 所需解决方案: 因此,这是可能的最佳方案:如果可以将图表从excel文件导出到png(或jpg或其他格式),而无需操作excel文件,例如从命令行或其他方式。而且生成的文件在OpenOffice中也可

问题:

我正在开发一个web应用程序,它将数据从数据库导出到Excel,包括图表,这是导出的首要原因

现在,我希望图表也可以在网页上看到,而无需导出数据和打开下载的excel文件。当然,这可以通过JS库来完成,但是由于图表非常复杂,我想重新使用现有的导出到excel,或者重新编写它,现在是在JS中

所需解决方案:

因此,这是可能的最佳方案:如果可以将图表从excel文件导出到png(或jpg或其他格式),而无需操作excel文件,例如从命令行或其他方式。而且生成的文件在OpenOffice中也可以很好地打开,所以我可以使用它。然后我可以在服务器上导出到excel,然后从excel导出图像,然后将图像发送到客户端

这样的事情可能吗?我不反对第三方计划,如果它能起作用的话。如果不是,您认为该方案的下一个最佳解决方案是什么

我有Excel 2016,我正在用PHPExcel生成Excel文件,如果这很重要的话

可能的解决方案:

有些不错的选项似乎是,但我不知道你是否可以在不打开excel UI的情况下从mcommand行/执行该操作


另外,它看起来还不错,但我以前从未使用过它,您能在不打开Calc UI的情况下通过此API(使用Java或其他工具)导出图表吗?我知道open office有--invisible选项,这可能会很有用。

好的,这会将图表导出为.png文件,但它会打开excel文件(然后关闭),您可以尝试以下操作:

将其放入
.vbs
-文件中,并通过控制台运行

    Set objXLS = CreateObject("Excel.Application")
    Set yWkbk = objXLS.Application.Workbooks.Open("C:\yourpath\yourfile.xls")
    'Sheet ID can change of course 
    Set yWksht = yWkbk.Sheets(1)
    Set yChart = yWksht.ChartObjects("yourchartname").Chart
    yChart.Export "C:\yourpath\yourfilename.png", "PNG"

    objXLS.Quit
    Set objXLS = Nothing

不需要使用API。这个命令对我起了作用:

"C:\Program Files\LibreOffice 5\program\soffice.exe" -convert-to png "Untitled 1.ods" -headless

有关讨论,请参见:

(对于excel)如果您可以选择vbscript,您可以通过vbscript执行此操作。还有一个问题:这是关于打开工作簿还是关于查看工作簿?@Tom我从未考虑过区别。我想这是关于看工作簿的。我想需要以这样或那样的方式打开。我的主要观点是,我需要自动导出图表,而不需要用户与UI进行单一交互-因为需要导出的服务器上没有用户与UI交互。我将在稍后发布一个答案。这看起来不错,但我找不到如何运行visual basic文件。我用的是Windows10。官方的下载网站就是不工作,它没有下载任何东西。我不使用Win10,但我想这应该可以。下载链接对我来说也很好。您可以尝试这样做:或者创建
.vbs
-文件,将代码粘贴到文件中,保存并关闭。通过双击运行。谢谢,这确实导出了图表,这很好,但是缺少了一些东西(如图例),在使用libre office打开文件时显示的图例只是fina。这很奇怪,我尝试时它显示了图例。也许是你特定版本的LO中的一个bug?我的是5.1.0.3。我还使用了.ods格式,听起来像是在使用Excel格式。