我正在尝试使用这个简单的脚本创建一个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向我显示该提示。
我认为问题出在我的模板变量中...任何想法?