我在velocity模板中有一个HTML表.我想使用java脚本或jquery将html表格数据导出到excel,与所有浏览器兼容.

<script type="text/javascript">
function ExportToExcel(mytblId){
       var htmltable= document.getElementById('my-table-id');
       var html = htmltable.outerHTML;
       window.open('data:application/vnd.ms-excel,' + encodeURIComponent(html));
    }
</script>

此脚本在Mozilla Firefox中运行良好,它弹出一个Excel对话框,并询问打开或保存选项.但是,当我按照预期在Chrome browser it is not working中测试相同的脚本时,当单击按钮时,Excel没有弹出窗口.数据下载到一个文件中,文件类型为"file type:file",没有像.xls这样的扩展名 Chrome控制台中没有错误.

Jsfiddle示例:

http://jsfiddle.net/insin/cmewv/

这在mozilla中运行良好,但在chrome中不起作用.

Chrome浏览器测试用例:

第一张图片:我点击导出到EXCEL按钮

第一张图片:我点击导出到EXCEL按钮

结果是:

Result

推荐答案

Excel导出脚本可以在IE7+、Firefox和Chrome上运行.

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,"Say Thanks to Sumit.xls");
    }  
    else                 //other browser not tested on IE 11
        sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));  

    return (sa);
}

只需创建一个空白IFRAME即可:

<iframe id="txtArea1" style="display:none"></iframe>

在以下位置调用此函数:

<button id="btnExport" onclick="fnExcelReport();"> EXPORT </button>

Html相关问答推荐

如何改进这个jQuery滑动器的功能?

HTML图像无法正确放大和缩小规模

如何正确使用counter()、counter—increment()和counter—reset()嵌套标题?

如何找到FontAwese图标的Unicode值?

如何更改Django中的默认按钮?

在css中是否可以在遮罩图像中结合线性渐变和径向渐变?

如何在r中提取明显非标准html标签的值

如果使用复选框属性更改,如何防止事件更改?

当我们在vue中使用截断大文本时如何显示标题属性?

白色栏超出页面100%的右侧

为什么每当我调整图片大小时它都会使我的其他元素移动

将 HTML 元素粘贴到容器底部,而不剪裁其顶部

为什么 text-align 应用于 span 而不是 CSS 中的 img

无法使用 flexbox 裁剪图像

如何使用 CSS 使粘性元素固定在视口顶部

在 jinja 模板内的 html 表中嵌套 For 循环

右对齐 bootstrap 导航项而不是下拉菜单

当我希望它只横向滚动时,可滚动菜单也会上下移动

如何在不删除

标记的情况下加入 HTML 中的段落

将固定/绝对伪元素放置在相对 div(具有滚动条)内,始终位于底部