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

时间:2016-08-05 11:10:28

标签: excel charts export openoffice-calc

问题:

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

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

所需解决方案:

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

这样的事情是否可能?我不反对第三方程序,如果它可以做到这一点。如果没有,您认为这种情况的下一个最佳解决方案是什么?

我有Excel 2016,我正在使用PHPExcel生成excel文件,如果这有任何重要性。

可行的解决方案:

save the document as web page似乎有一些不错的选择,但我不知道你是否可以在没有打开excel用户界面的情况下从mcommand行执行此操作。

此外Open Office API看起来并不坏,但我之前从未使用过它,你可以通过这个API(使用Java或其他东西)导出图表而无需打开Calc UI吗?我知道开放式办公室有--invisible选项,这可能是有用的。

2 个答案:

答案 0 :(得分:1)

好吧,这会将图表导出为.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

答案 1 :(得分:0)

无需使用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/