使用Javascript下载 xlsx 格式的 Excel 文件(将HTML表格导出为Excel)

6
我正在使用JS、HTML和CSS构建我的应用程序并将其托管在服务器上。我正在使用以下代码将所有HTML表格导入xls格式的Excel文件中。
function fnExcelReport(tableNames) {
    var tab_text = "";
    var arrTableNames = tableNames.split("|");
    if (arrTableNames.length > 0) {
        for (var i = 0; i < arrTableNames.length; i++) {

                tab_text = tab_text + "<table border='1px'>";

            tab = document.getElementById(arrTableNames[i]); 


            for (j = 0; j < tab.children.length; j++) {
                tab_text = tab_text + tab.children[j].innerHTML;
            }
            tab_text = tab_text + "</table><br/><br/>";
            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
    {
        if (window.navigator.msSaveBlob) {
            var blob = new Blob([tab_text], {
                type: "data:application/vnd.ms-excel;"
            });
            sa = navigator.msSaveBlob(blob, "report.xls");
        }
    } else //other browser not tested on IE 11
        sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));

    return (sa);
}

我可以下载并打开该文件,但是当我打开它时,会收到以下警告消息:

Warning message on Excel image

当我点击“是”,所有我的数据都可以在Excel文件中正确显示。我不想看到那个警告消息。如何更改我的代码,使其以xlsx格式打开并删除警告消息?
2个回答

1
这是因为内容不是“xls”类型。即,如果Excel是“xlsx”类型,则会出现此错误。请尝试使用其他带有文件名的Excel扩展名。

0
在你的代码中,blob不是Excel文件。所以,只需要改变文件格式。它无法生成正确的Excel文件。
有两种考虑的方法。
1. 使用JS Excel库。然后你只需要使用JS Excel库的API来生成Excel文件。
2. 使用服务器端的Excel库(如Java、.Net服务器)。这种方式需要你使用JS代码将表格数据传输到服务器,在服务器端生成Excel文件。然后使用JS代码下载在服务器上生成的Excel文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接