提供自定义文件名在 table2excel jquery 中不起作用?

Providing custom filename is not working in table2excel jquery?

我已经使用 jquery 代码将 table 数据导出到 excel 文件,从 here

获得了代码

但提供客户文件名不起作用,它采用随机文件名。
如何从代码中提供自定义文件名。

<script>
$(function() {
        $("button").click(function(){
        $("#example").table2excel({
                exclude: ".noExl",
        name: "Employee"
        }); 
         });
});
</script>

此插件中的 name 变量是指工作表的名称,而不是 Excel 文件的名称。

如果您希望能够更改文件名,则必须对插件代码进行一些修改,或者只使用适合您需要的另一个插件或一段代码,例如 this one(其中您可以将文件名放在 postfix 变量中)。

您可以 hack table2excel jquery 为下载提供自定义名称,如下所示:

来自你的 js:

<script>
$(function() {
        $("button").click(function(){
        $("#example").table2excel({
                exclude: ".noExl",
        name: "Employee.txt" //This name will be passed for download
        }); 
         });
});
</script>

然后将 table2excel.js 中的 getFileName(e.settings) 调用更改为如下名称:

if (typeof msie !== "undefined" && msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))      // If Internet Explorer
            {
                if (typeof Blob !== "undefined") {
                    //use blobs if we can
                    fullTemplate = [fullTemplate];
                    //convert to array
                    var blob1 = new Blob(fullTemplate, { type: "text/html" });
                    window.navigator.msSaveBlob(blob1, name ); // Changed Here
                } else {
                    //otherwise use the iframe and save
                    //requires a blank iframe on page called txtArea1
                    txtArea1.document.open("text/html", "replace");
                    txtArea1.document.write(e.format(fullTemplate, e.ctx));
                    txtArea1.document.close();
                    txtArea1.focus();
                    sa = txtArea1.document.execCommand("SaveAs", true, name ); // Changed Here
                }

            } else {
                link = e.uri + e.base64(e.format(fullTemplate, e.ctx));
                a = document.createElement("a");
                a.download = name;  // Changed Here
                a.href = link;

                document.body.appendChild(a);

                a.click();

                document.body.removeChild(a);
            }

1.Open jquery.table2excel.js

2.Find function getFileName(settings)

3.Change 到

function getFileName(settings) {
        return ( settings.filename ? settings.filename : settings.name ) +
               ( settings.fileext ? settings.fileext : ".xls" );
}

settings.name 是您调用 jquery2excel 时自定义 js 脚本的变量 在我的示例中,它看起来像

$(".generateXLS").click(function(){
    var idOfTable = $(this).attr("data-rel");
    var tableName = $(this).attr("data-table-name");
    $("#tableN"+idOfTable).table2excel({
        name: tableName
    }); 
});

您不必编辑或添加任何 table2excel 插件包含文件名参数。 所以现在你有两个参数,第一个是 name 它用于工作表名称,另一个参数 filename 它专用于 excel 文件名字你可以查看下面的代码。

$("#example").table2excel({
                exclude: ".noExl",
                name: "Employee",
                filename : "EmployeeFileName",
});

有关更多信息,您可以查看 jquery.table2excel.js 文件 它有解释一切的代码行。

 function getFileName(settings) {
        return ( settings.filename ? settings.filename : "table2excel") + ".xlsx";
    }