在前端開發(fā)中,經常需要處理數據展示的問題。而Excel表格是一個非常常見的數據展示方式,很多時候我們需要將數據導出成Excel格式。而javascript可以實現Excel導出的功能,使得前端開發(fā)人員能夠更好地處理數據展示問題。
當我們需要將數據導出成Excel格式時,一種常見的做法是先將數據格式化成表格,然后將表格導出成Excel文件。以下是一個導出表格的示例代碼:
function exportTableToExcel(tableID, filename = ''){ var downloadLink; var dataType = 'application/vnd.ms-excel'; var tableSelect = document.getElementById(tableID); var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20'); filename = filename?filename+'.xls':'excel_data.xls'; downloadLink = document.createElement("a"); document.body.appendChild(downloadLink); if(navigator.msSaveOrOpenBlob){ var blob = new Blob(['\ufeff', tableHTML], { type: dataType }); navigator.msSaveOrOpenBlob(blob, filename); }else{ downloadLink.href = 'data:' + dataType + ', ' + tableHTML; downloadLink.download = filename; downloadLink.click(); } }
這個函數有兩個參數,第一個參數是需要導出的表格的ID,第二個參數(可選)是導出Excel文件的名稱。當我們調用這個函數時,它將會在頁面中生成一個下載鏈接,點擊鏈接將會下載導出的Excel文件。
在某些情況下,我們需要導出的并不是一個簡單的表格,而是一個包含多個數據表格的頁面。以下是一個導出多個表格的示例代碼:
function exportMultipleTablesToExcel(tableIDs, filename = '') { var tables = []; var tableHTMLs = []; for(var i = 0; i< tableIDs.length; i++) { var table = document.getElementById(tableIDs[i]); tables.push(table); tableHTMLs.push(table.outerHTML.replace(/ /g, '%20')); } var dataType = 'application/vnd.ms-excel'; filename = filename?filename+'.xls':'excel_data.xls'; var downloadLink; downloadLink = document.createElement("a"); document.body.appendChild(downloadLink); if(navigator.msSaveOrOpenBlob){ var blob = new Blob(['\ufeff', tableHTML], {type: dataType}); navigator.msSaveOrOpenBlob(blob, filename); }else{ var zip = new JSZip(); for(var i = 0; i< tables.length; i++) { zip.file("table" + i + ".xls", tableHTMLs[i]); } zip.generateAsync({type: "blob"}) .then(function(content) { downloadLink.href = URL.createObjectURL(content); downloadLink.download = filename; downloadLink.click(); }); } }
這個函數有兩個參數,第一個參數是需要導出的多個表格的ID數組,第二個參數(可選)是導出Excel文件的名稱。當我們調用這個函數時,它將會將多個表格合并成一個Excel文件,并生成一個下載鏈接,點擊鏈接將會下載導出的Excel文件。
總的來說,使用javascript實現Excel導出功能非常便捷,可以大大提高前端的數據展示效率。通過多個實例的講解,相信大家已經基本了解了如何實現這個功能,希望這篇文章對前端開發(fā)人員能有所幫助。