我正在使用Highchart库及其模块(export-csv)将图表导出为excel。
我获取SVG图表数据(chart.getSVG()),然后修改export-csv模块:
Highcharts.Chart.prototype.downloadXLS = function () {
var svg = this.getSVG();
var dataUrl = 'data:image/svg+xml,'+encodeURIComponent(svg);
var uri = 'data:application/vnd.ms-excel;base64,',
template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">' +
'<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>' +
'<x:Name>Ark1</x:Name>' +
'<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->' +
'<style>td{border:none;font-family: Calibri, sans-serif;} .number{mso-number-format:"0.00";}</style>' +
'<meta name=ProgId content=Excel.Sheet>' +
'<meta charset=UTF-8>' +
'</head><body>' +
this.getTable(true) +
'<img src="'+dataUrl+'" alt="file.png"/>'+
'</body></html>',
base64 = function (s) {
return window.btoa(unescape(encodeURIComponent(s))); // #50
};
getContent(
this,
uri + base64(template),
'xls',
template,
'application/vnd.ms-excel'
);
};
使用SVG数据:
var svg = this.getSVG();
我们生成一个URL图片:
var dataUrl = 'data:image/svg+xml,'+encodeURIComponent(svg);
并将该URL添加到excel正文:
'<img src="'+dataUrl+'" alt="file.png"/>'+
但我无法导出图像
任何想法?
谢谢!