Javascript HTML excel导出

Javascript HTML excel导出,javascript,jquery,html,excel,Javascript,Jquery,Html,Excel,我正在将HTML表格导出到Excel格式文件,然后将其作为.xls下载。这在Firefox、Chrome等浏览器中运行良好,但在IE中并不像预期的那样 下面是我正在使用的函数。最后的if语句将确定浏览器是否为IE function exportTable(obj) { var tab_text="<table border='2px'><tr>"; var textRange; var j=0; tab = obj; for(j = 0 ; j <

我正在将HTML表格导出到Excel格式文件,然后将其作为
.xls
下载。这在Firefox、Chrome等浏览器中运行良好,但在IE中并不像预期的那样

下面是我正在使用的函数。最后的
if
语句将确定浏览器是否为IE

function exportTable(obj) {
  var tab_text="<table border='2px'><tr>";
  var textRange; var j=0;
  tab = obj;


  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 = window.open();
      txtArea1.document.open("txt/html","replace");
      txtArea1.document.write(tab_text);
      txtArea1.document.close();
      txtArea1.focus(); 
      sa=txtArea1.document.execCommand("SaveAs",false,"export.xls");
      txtArea1.window.close()
  } else { //other browser not tested on IE 11
      sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));            
      return (sa);
  }
}
函数导出表(obj){
var tab_text=“”;
var textRange;var j=0;
tab=obj;
对于(j=0;j
这就是奇怪之处。虽然“另存为”框强制用户将其下载为
.html
.txt
文件,但文件本身保存为
.xls


是否可以禁用此提示?或者是否有其他解决方法?我不希望最终用户对此感到困惑。

尝试使用隐藏的iframe,而不是新窗口。这为我解决了许多问题。为了支持IE9,我总结了以下代码片段:

if (event.data.browser !== 'IE') {
    $.util.open('data:application/vnd.ms-excel,' + event.data.content);
    return true;
}
else { 
    // The iframe already has to be included in the HTML, or you'll get a 'no access error'.
    frame.document.open("txt/html","replace");
    frame.document.write(event.data.content);
    frame.document.close();
    frame.focus(); 
    command = frame.document.execCommand("SaveAs", true, "data_table.xls");
    return command;                     
}
唯一的缺点是,在您第一次打开它并将其重新保存为.xls之前,它还不是一个真正的excel.xls文件 这种技术只是利用excels理解基本html标记的能力

一种更好但更复杂的方法是实际构建一个base64编码的“字符串”,如msdn文档中所示,但最终这对于项目来说已经足够了


或者像所有的东西一样,有lotsa库可以为您做这件事。

这可能会让您感兴趣:或者甚至是这样:您没有将其保存为.xls文件,而是将其保存为带有文件名的HTML。xls:-/使用此方法,它会强制用户保存文件以便查看,是否有办法使用“打开”查看excel选项?例如:jsfiddle.net/lesson8/jWAJ7(在fiddle示例中:单击“导出”按钮时,浏览器会显示一个对话框,其中包含打开和保存文件的选项),因此用户可以在不保存文件的情况下查看文件。是否有方法使用上述方法获取这些选项?提前感谢!