HTML表格到Excel – 格式和扩展名不匹配

我有一个函数将HTML表格转换成Excel文档。 但是在打开文件时,我从Excel收到以下消息:

“something.xls”的文件格式和扩展名不匹配。 等等…

下面是我为导出的function,它是从这个线程@SamPopes答案稍微编辑版本。 obj参数是我使用document.createElement('table');创build的table元素document.createElement('table');

什么办法可以防止这个消息打开文件?

 function export(obj) { var tab_text="<table border='2px'><tr>"; var textRange; var j=0; tab = obj; //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 you want links in your table tab_text= tab_text.replace(/<img[^>]*>/gi,""); // remove if you want images in your table tab_text= tab_text.replace(/<input[^>]*>|<\/input>/gi, ""); // removes 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,"export.xls"); } else { //other browser not tested on IE 11 sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text)); return (sa); } } 

正如我在上面的评论中所说的,这里是创build一个CSV文件的代码。 这样做的目的是为了避免您收到的错误信息,但是会消除您对格式化数据的任何机会(据我所知)。 这是我的代码,它使用一个进程的IE浏览器和其他浏览器的第二个:

 function exportTotalDataFile(){ var dataText = ""; var rowText = ""; 'allData is generated through an AJAX call that creates a JSON' 'this loop creates the header row' for (var index in allData[0]) { rowText += index + ','; } 'takes the trailing comma out, adds new row' rowText = rowText.slice(0, -1); dataText += rowText + '\r\n'; 'Produces the data rows' for (var i = 0; i < allData.length; i++) { var rowText = ""; for (var index in allData[i]) { rowText += '"' + allData[i][index] + '",'; } rowText.slice(0, rowText.length - 1); dataText += rowText + '\r\n'; } var fileName = "Losses Report"; 'Internet Explorer logic' var isIE = false || !!document.documentMode; if (isIE){ var IEwindow = window.open(); IEwindow.document.write('sep=,\r\n' + dataText); IEwindow.document.close(); IEwindow.document.execCommand('SaveAs', true, fileName + ".csv"); IEwindow.close(); } 'All the other browsers' else { var uri = 'data:text/csv;charset=utf-8,' + escape(dataText); var link = document.createElement("a"); link.href = uri; link.style = "visibility:hidden"; link.download = fileName + ".csv"; document.body.appendChild(link); link.click(); document.body.removeChild(link); } } 

对不起,这种方法在格式部门是有限的,但我希望这有助于