6

将 HighChart 与其他页面内容(如表格、文本等)一起导出为 excel 文件中的图像。当我单击导出按钮时,整个页面内容将通过标题另存为 excel 文件,而不是将所有页面内容导出到 excel 文件中不包括 HighChart 图表。我认为解决方案是将图形导出为 excel 中的图像,但我不知道该怎么做。有谁知道该怎么做或知道如何解决这个问题?

4

2 回答 2

4
  1. 这是关于highcharts 文档的链接。这将帮助您导出图像并存储它。

  2. a)文档 #1
    b)文档 #2
    这将帮助您使用 PHPExcel 类 API。

  3. 最后,使用 PHPExcel 类将图像粘贴到工作表的示例:

还有更多问题吗?看到链接:
和官方 PHPExcel 示例:这里.

祝你好运!

于 2012-11-13T09:28:56.510 回答
0

首先,您必须通过 ajax 向服务器发送 svgtext 和 csv 文本。然后执行以下操作:

public JsonResult ExportToImage(string base64, string graphdata) { try {

            var base64String = base64.Remove(0, 1);
            var rows = graphdata.Split('\n');

        byte[] bytes = Convert.FromBase64String(base64);
        var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory , "Content\\Images\\");
            DirectoryInfo di = new DirectoryInfo(path);
            FileInfo[] files = di.GetFiles("*.xls")
                                 .Where(p => p.Extension == ".xls").ToArray();
            foreach (FileInfo file in files)
                try
                {
                    file.Attributes = FileAttributes.Normal;
                    System.IO.File.Delete(file.FullName);
                }
                catch { }
            using (Image image = Image.FromStream(new MemoryStream(bytes)))
        {
            image.Save(path+"output.png", ImageFormat.Jpeg);  // Or Png
        }

            var xlApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook xlWorkBook = xlApp.Workbooks.Add();
            Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet = xlWorkBook.Sheets[1];

            for(var y=0; y<rows.Count();y++)
            {
                var row = rows[y];
                var columValues = row.Split(',');
                for (var x = 0; x < columValues.Count(); x++)
                {
                    xlWorkSheet.Cells[y+20, x+1] = columValues[x];
                }

            }


            xlWorkSheet.Shapes.AddPicture(path + "output.png", MsoTriState.msoFalse, MsoTriState.msoCTrue, 0, 0, -1, -1);
            var fileName = string.Format("GraphDataExport{0}.xls", DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss"));
            xlWorkBook.SaveAs(path + fileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
            xlWorkBook.Close(true);
            xlApp.Quit();

            Marshal.ReleaseComObject(xlApp);
            return Json(fileName);
        }
        catch (Exception e)
        {
            return Json(e.Message + Environment.NewLine + e.InnerException + Environment.NewLine + e.Data + Environment.NewLine);
        }
    }

现在您可以对该文件执行 window.location

于 2018-09-19T13:51:43.453 回答