/* 通用導出數據 需要引入 xlsx.core.js * data:數據 * th:表頭 * filename:導出表格名稱 */ var data = []; var th = [ ["js導出excel表", "", "", "", "", ""], ["標題1", "標題2", "標題3", "標題4", "標題5", "標題6"], ]; var filename = "導出表格名稱";
exportData(data, th, filename); function exportData(data, th, filename) { var deferred = $.Deferred(); data = data || []; th = th || []; var merges = []; merges.push({ s: { //s為開始 c: 0, //開始列 r: 0 //開始行 }, e: { //e結束 c: 5, //結束列 r: 0 //結束行 } }); if (data.length === 0 || th.length === 0) {
console.log("缺少數據"); deferred.reject(); return; } filename = filename || '數據導出'; filename += '_' + moment(new Date()).format('YYYYMMDDHHmmss') + '.xlsx'; // moment 時間插件(如不需要,可以去掉) var loadedData = []; var i = 0; loadedData = loadedData.concat(th); for (i = 0; i < data.length; ++i) { var item = data[i]; var obj = []; obj.push(item.title1 || "-"); obj.push(item.title2 || "-"); obj.push(item.title3 || "-"); obj.push(item.title4 || "-"); obj.push(item.title5 || "-"); obj.push(item.title6 || "-"); loadedData.push(obj); } initFile(); function initFile() { var wb = XLSX.utils.book_new(), ws = XLSX.utils.aoa_to_sheet(loadedData); ws['!merges'] = merges; // 合並單元格 XLSX.utils.book_append_sheet(wb, ws, "sheet1"); XLSX.writeFile(wb, filename, { compression: true }); deferred.resolve(); } return deferred.promise(); }