将HighChart作为excel文件中的图像与其他页面内容一起导出

时间:2012-07-11 05:06:21

标签: php image excel graph highcharts

将HighChart导出为ex​​cel文件中的图像以及其他页面内容,如表格,文本等。当我单击导出按钮时,整个页面内容将通过标题保存为excel文件,而不是将所有页面内容导出到excel文件它不包括HighChart图。我认为解决方案是将图形导出为ex​​cel中的图像,但我不知道如何做到这一点。有没有人知道怎么做或有任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

  1. 以下是highcharts documentation上的链接。这将帮助您导出图像并存储它。

  2. a)Documentation #1
    b)Documentation #2
    这将有助于您使用PHPExcel类API。

  3. 最后使用PHPExcel类将图像粘贴到工作表中:onetwo;

  4. 还有更多问题吗?请看这些链接:onetwo 官方PHPExcel示例:here

    祝你好运!

答案 1 :(得分:0)

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

公共JsonResult ExportToImage(字符串base64,字符串graphdata)         {             尝试             {

            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中定位