创建xls文件时“文件格式与扩展名不同”

时间:2015-07-14 16:28:16

标签: javascript angularjs

我正在尝试使用这个简单的脚本创建一个xlsx文件:

myApp.factory('Excel',function($window){
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>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
    base64=function(s){return $window.btoa(unescape(encodeURIComponent(s)));},
    format=function(s,c){return s.replace(/{(\w+)}/g,function(m,p){return c[p];})};
return {
    tableToExcel:function(worksheetName){
        var table='ffgs',
            ctx={worksheet:worksheetName,table:'<tr><td>TEST</td></tr><tr><td>This is just a test</td></tr>'},
            href=uri+base64(format(template,ctx));
        return href;
    }
};
});

这样称呼:

$scope.genReport = function() {
    var exportHref=Excel.tableToExcel('sheetname');
    $timeout(function(){location.href=exportHref;},100);    
}

无论如何,当它在excel 2010上打开它时,它告诉我文件格式与扩展名不同。无论如何确认提示会打开它,但我不希望excel向我显示该提示。

我认为问题出在我的模板变量中...任何想法?

0 个答案:

没有答案