gpt4 book ai didi

javascript - tableToExcel 在 IE 和 Firefox 中不起作用

转载 作者:行者123 更新时间:2023-11-28 04:26:09 25 4
gpt4 key购买 nike

我正在尝试将 html 表格数据导出到 Excel 文件,但下载功能在 IE 和 Firefox 中不起作用。它在 Chrome 中运行良好。

服务工厂-

aixmmServices.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(tableId,worksheetName){
var table=$(tableId),
ctx={worksheet:worksheetName,table:table.html()},
href=uri+base64(format(template,ctx));
return href;
}
};
});

Controller -

frameLparReportApp.controller('frameLparReportController', function ($scope, $state, frameLparReportServices, Excel, $timeout) {
'use strict';
$("#btnExport").click(function (e) {
window.open('data:application/vnd.ms-excel,' + $('#frameLpar').html());
e.preventDefault();
});

$scope.exportToExcel=function(tableId){ // ex: '#my-table'
var exportHref=Excel.tableToExcel(tableId,'frameLparReport');
var a = document.createElement('a');
a.href = exportHref;
$scope.currentDate = new Date().getTime().toString();
a.download = "frameLparStateListingReport_" + $scope.currentDate + ".xls";
a.click();

$timeout(function(){location.href=exportHref;},100); // trigger download
};

});

HTML -

<input type="button" id="btnExport" value="Download Frame LPAR Report"  class="btn btn-link" ng-click="exportToExcel('#frameLpar')">    

最佳答案

添加了将 HTML 表格导出到 Excel 工作表时包含 IE 和 Firefox 的功能。

 aixmmServices.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 {
getExportExcel: function (tableId, fileName) {

name = fileName + '.xls';
var table = document.querySelector(tableId),
ctx = {table: table.innerHTML};
var browser = window.navigator.appVersion;

//Workaround to enable the users to download the report in IE.
if ((browser.indexOf('Trident') !== -1 && browser.indexOf('rv:11') !== -1) ||
(browser.indexOf('MSIE 10') !== -1)) {
var builder = new window.MSBlobBuilder();
builder.append(uri + format(template, ctx));
var blob = builder.getBlob('data:application/vnd.ms-excel');
window.navigator.msSaveOrOpenBlob(blob, name);
} else {
/*var link = document.createElement('a');
link.download = name;
link.href = uri + base64(format(template, ctx));
link.click(); */
var blob = new Blob([format(template, ctx)], { type: 'application/vnd.ms-excel', endings: 'native' });

var elem = window.document.createElement('a');
//elem.href = uri + base64(format(template, ctx));
elem.href = window.URL.createObjectURL(blob);
elem.download = name;
document.body.appendChild(elem);
elem.click();
document.body.removeChild(elem);
}
}
};
});

Controller -

$scope.exportToExcel=function(tableId){ // ex: '#my-table'
var d = new Date();
var date = d.getDate() + "" + (d.getMonth() + 1) + "" + d.getFullYear();
var filename = "lparReport_" + date;
var exportHref=Excel.getExportExcel(tableId,filename);
// $timeout(function(){location.href=exportHref;},100); // trigger download
};

关于javascript - tableToExcel 在 IE 和 Firefox 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45041381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com