【问题标题】:How to automatically export a chart from Excel (or Calc) to PNG如何自动将图表从 Excel(或 Calc)导出为 PNG
【发布时间】:2016-12-11 18:50:03
【问题描述】:

问题:

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

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

所需的解决方案:

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

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

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

可能的解决方案:

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

另外Open Office API 看起来还不错,但我以前从未使用过它,您能否在不打开 Calc UI 的情况下通过此 API(使用 Java 或其他东西)导出图表?我知道开放式办公室有 --invisible 选项,这可能很有用。

【问题讨论】:

  • (对于 excel)如果您愿意,您可以通过 vbscript 执行此操作。
  • 还有一个问题:这是关于打开工作簿还是关于看到工作簿?
  • @Tom 我从未考虑过差异。我想这是关于看工作簿的。我想需要以一种或另一种方式打开。我的主要观点是我需要自动导出图表,而不需要用户与 UI 进行单一交互 - 因为没有用户与服务器上的 UI 交互,导出需要发生。
  • 我会在稍后发布答案。

标签: excel charts export openoffice-calc


【解决方案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

【讨论】:

【解决方案2】:

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

【讨论】:

  • 谢谢,这确实导出了图表,这很好,但是缺少一些东西(如图例),在使用 libre office 打开文件时显示的图例只是 fina。
  • 奇怪,我试的时候显示图例。也许您的特定版本的 LO 中存在错误?我的是 5.1.0.3。我还使用了 .ods 格式,听起来您使用的是 Excel 格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 2022-08-18
  • 2013-01-27
  • 1970-01-01
相关资源
最近更新 更多