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