使用javascript将SVG图像导出到Excel

时间:2017-03-27 16:10:11

标签: javascript excel csv svg highcharts

我正在使用Highchart库及其模块(export-csv)将图表导出为ex​​cel。

我获取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"/>'+

但我无法导出图像

任何想法?

谢谢!

0 个答案:

没有答案