导出HTML到Excel:当试图打开文件时,它会提示像文件已损坏

我在浏览器上使用JavaScript代码导出html表格。 所有完成,但是当我尝试在Microsoft Excel中打开文件时,它会提示如下:

“Excel无法打开文件'filename.xlsx',因为文件扩展名的文件格式无效。请确认文件没有被损坏,并且文件扩展名与文件的格式相匹配。是否要立即打开文件?”

如果我按是的,它工作正常,所有的数据在Excel中正确显示。

我想删除这个提示。

我的JavaScript代码是

function fnExcelReport() { var tab_text="<table border='2px'><tr bgcolor='#87AFC6'>"; var textRange; var j=0; tab = document.getElementById('headerTable'); // id of table for(j = 0 ; j < tab.rows.length ; j++) { tab_text=tab_text+tab.rows[j].innerHTML+"</tr>"; //tab_text=tab_text+"</tr>"; } tab_text=tab_text+"</table>"; tab_text= tab_text.replace(/<A[^>]*>|<\/A>/g, "");//remove if u want links in your table tab_text= tab_text.replace(/<img[^>]*>/gi,""); // remove if u want images in your table tab_text= tab_text.replace(/<input[^>]*>|<\/input>/gi, ""); // reomves input params var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE "); if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer { txtArea1.document.open("txt/html","replace"); txtArea1.document.write(tab_text); txtArea1.document.close(); txtArea1.focus(); sa=txtArea1.document.execCommand("SaveAs",true,"data.xls"); } else{} var a = document.createElement('a'); a.href = 'data:application/vnd.ms-excel,' + encodeURIComponent(tab_text); a.download = 'rxe_data' + '.xls'; a.click(); } 

最后,似乎不可能绕过这个警报。 如果我将HTML代码转换为Excel中打开的数据,那么我实现了服务器端代码来生成纯粹的Excel,并将其返回给客户端,而不是HTML数据。

据我所知,你实际上并没有build立一个.xls文件。 您只是创build一个扩展名为.xls的HTML文件。 这不一样。 Excel似乎能够读取您的HTML,但它警告你,因为文件格式和扩展名不匹配。

如果你想构build真正的xls文件,看看这样做的各种库,例如: https : //github.com/SheetJS/js-xlsx