0

是否有可能导出在 powerpoint 中使用 hightcharts 完成的图表?否则有人可以帮我找到解决方案吗?

谢谢

4

2 回答 2

1

只需将其导出为图像(PNG 或 JPG)并将该图像添加到 PowerPoint 幻灯片中?大多数 highcharts 图表在图表的右上角都有一个下载(导出)按钮。

于 2013-04-06T17:00:11.183 回答
0

我知道这很旧,但我目前正在尝试实现同样的目标。如果您乐于使用 png 或 jpg,那么我会使用 phantonJS (OpenQA.Selenium.PhantomJS) 来提取 svg,然后使用任何转换机制来转换为 png/jpg

public IList<string> ExtractSVGs(string htmlFilePath)
    {
        IList<string> SVGs = new List<string>();
        foreach (string chart in getChartIds(htmlFilePath))
        {
            SVGs.Add(ExtractSVG(htmlFilePath, chart));
        }
        return SVGs;
    }

    private IList<string> getChartIds(string htmlFilePath)
    {
        IList<string> chartIds = new List<string>();
        string whatToFind = @"  ""renderTo"": """;
        foreach (string line in (System.IO.File.ReadLines(htmlFilePath)))
        {
            if (line.StartsWith(whatToFind))
                chartIds.Add("chart" + line.Substring(line.IndexOf(whatToFind) + whatToFind.Length, 32));
        }
        return chartIds;
    }

    private string ExtractSVG(string htmlFilePath, string chartId)
    {
        var driverService = PhantomJSDriverService.CreateDefaultService();
        driverService.HideCommandPromptWindow = true;
        driverService.LoadImages = true;
        driverService.ProxyType = "none";
        driverService.LocalToRemoteUrlAccess = true;
        driverService.WebSecurity = false; // may not be necessary

        using (var driver = new PhantomJSDriver(driverService))
        {
            driver.Navigate().GoToUrl(new Uri("file:///" + htmlFilePath));
            string svg = (string)driver.ExecuteScript(String.Format("return {0}.getSVG();", chartId), null);
            driver.Close();
            return svg;
        }
    }

您可以将 JS 更改为直接导出为 png,但这需要链接到导出服务器(或让该代码在本地运行)。

附带说明一下,您可能需要根据构建 html 文件的方式更改要查找的内容。

于 2015-04-09T11:36:16.360 回答