Javascript HTML excel导出
我正在将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 <
.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示例中:单击“导出”按钮时,浏览器会显示一个对话框,其中包含打开和保存文件的选项),因此用户可以在不保存文件的情况下查看文件。是否有方法使用上述方法获取这些选项?提前感谢!