Javascript 使用FireFox下载时,导出到.xls的HTML表无法打开

Javascript 使用FireFox下载时,导出到.xls的HTML表无法打开,javascript,html,excel,firefox,xls,Javascript,Html,Excel,Firefox,Xls,我正在使用我在stackoverflow上找到的函数。它在Internet Explorer和Google Chrome上运行良好,但在FireFox中使用时,下载的文件无法在Excel中打开。当我双击它或从Excel打开时,它会显示一个空白工作簿。当我将下载的文件从.xls转换为.html时,它会在前面提到的任何浏览器中正常打开 有没有关于我做错了什么以及如何纠正的想法 提前谢谢 function fnExcelReport(){ var tab_text="<table border=

我正在使用我在stackoverflow上找到的函数。它在Internet Explorer和Google Chrome上运行良好,但在FireFox中使用时,下载的文件无法在Excel中打开。当我双击它或从Excel打开时,它会显示一个空白工作簿。当我将下载的文件从.xls转换为.html时,它会在前面提到的任何浏览器中正常打开

有没有关于我做错了什么以及如何纠正的想法

提前谢谢

function fnExcelReport(){
var tab_text="<table border='2px'><tr bgcolor='#87AFC6'>";
var textRange; var j=0;
var tab = document.getElementById('GroupMembersTable'); // id of table
var sa
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, ""); // 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,"SecurityAudit.xls");
}  
else { //other browser not tested on IE 11
    sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));  
}
return (sa);
}
函数fnExcelReport(){
var tab_text=“”;
var textRange;var j=0;
var tab=document.getElementById('GroupMembersTable');//表的id
var sa
对于(j=0;j|/g,“”;//如果需要表中的链接,请删除
tab_text=tab_text.replace(//*>/gi,“”;//如果希望表中有图像,请删除
tab_text=tab_text.replace(//*>|/gi,“”)//删除输入参数
var ua=window.navigator.userAgent;
变量msie=ua.indexOf(“msie”);
如果(msie>0 | |!!navigator.userAgent.match(/Trident.*rv \:11\./)//如果Internet Explorer
{
打开(“txt/html”,“replace”);
txtArea1.文档。写入(制表符文本);
txtArea1.document.close();
txtArea1.focus();
sa=txtArea1.document.execCommand(“SaveAs”,true,“SecurityAudit.xls”);
}  
else{//其他浏览器未在IE 11上测试
sa=window.open('data:application/vnd.ms excel',+encodeURIComponent(制表符文本));
}
返回(sa);
}

由于最近的windows安全更新,我遇到了类似的问题。下载的文件被标记为已阻止。您需要转到文件属性,然后单击“取消阻止”按钮,然后文件将在Excel中打开。Excel将不再打开“我的工作站”上标记为已阻止的文件。

您可以避免此安全“问题”,禁用计算机或工作站上internet文件的受保护视图(受信任区域、Excel选项)


如果您下载该文件,则可以取消阻止,但如果您选择直接从excel打开文件,则在执行我在开头提到的禁用过程之前,该文件不起作用。

您可以在使用chrome和firefox创建的文件的差异上看到任何差异吗?chrome文件的文件名为“下载”而firefox则以随机字符串的形式下载。两者都有.xls扩展名。当转换为html时,这两个文件在browserstry中都显示相同的内容,例如:如果它们100%相同,那么它们的行为应该相同。我使用记事本打开了这两个.xls文件,并将内容复制粘贴到您提供的链接中。它说没有发现任何差异,这让我很困惑…奇怪。我能想到的另一件事是,可能其中一个的内容编码是错误的。