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

How to automatically export a chart from Excel (or Calc) to PNG

问题:

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

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

所需的解决方案:

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

这样的事情有可能吗?如果第三方程序可以解决问题,我并不反对。如果不是,您认为这种情况的下一个最佳解决方案是什么?

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

可能的解决方案:

save the document as web page 似乎有一些不错的选择,但我不知道您是否可以从命令行/不打开 excel UI.

此外 Open Office API 看起来还不错,但我以前从未使用过它,你可以通过这个 API 导出图表吗(使用 Java 或其他东西)而不用打开 Calc UI?我知道 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

有关讨论,请参阅:https://ask.libreoffice.org/en/question/2641/convert-to-command-line-parameter/