【问题标题】:Exported HTML table to excel giving warning while opening the file using office Excel使用 office Excel 打开文件时将 HTML 表导出到 excel 时发出警告
【发布时间】:2021-03-09 07:37:46
【问题描述】:

我正在尝试将 HTML 表格导出为 xls 格式。但是当我尝试使用 Excel 打开文件时,会收到一条警告消息。警告信息:

我使用这行代码:

var file = new Blob([ html.outerHTML], {
            type: "application/vnd.ms-excel"
        });
        var url = URL.createObjectURL(file);
        var filename = dateSelected + "-" + "attendance" + ".xls"

        //here we are creating HTML <a> Tag which can be trigger to download the excel file.
        var a = document.createElement('a');
        a.id = "export";
        document.body.appendChild(a);
        //here we are checking if the bwoswer is IE or not if IE then we use window.navigator.msSaveBlob function otherwise Go with Simple Blob file.
        if (window.navigator && window.navigator.msSaveBlob) {
            window.navigator.msSaveBlob(file, filename);
            a.click();
            document.body.removeChild(a);
            document.body.removeChild(html);
        } else {
            a.download = filename;
            a.href = url;
            a.click();
            document.body.removeChild(a);
            document.body.removeChild(html);
        }

我尝试更改 blob 类型,但没有任何效果。我该如何解决这个问题?

【问题讨论】:

  • 点击“是”后是否打开文件?
  • @PalashKantiBachar 是的...文件正在打开...并且该文件具有excel的所有功能...但是在打开之前会发出警告
  • 尝试将扩展名更改为.xlsx,它不应该给出警告,因为它不能包含宏。

标签: javascript excel


【解决方案1】:

问题

如果你用记事本或其他文本编辑器打开文件,你会发现文件中保存的是html或xml。但是,打开任何由 Excel 生成的 XLS 文件,您将看到无法读取的二进制字符。

由于 Excel 可以打开 xml 文件,因此您不会觉得幕后有什么问题。但是 *.xls 格式本质上是二进制的,与 xml 不同。如果文件扩展名与基础文件格式不匹配,Excel 会警告您。谷歌excel extension hardening,你就会知道我在说什么。

解决方案

如果您希望 excel 将其识别为 XLS 文件,则需要将其保存为该(excel 二进制)格式。有很多可用的库(有些是付费的,有些是免费的)可以帮助您生成真正的 XLS 文件。我建议您使用其中之一。另一种方法是切换到另一种格式,例如 XLSX。问题将保持不变。除非 excel 能够将文件扩展名与文件格式匹配,否则它将继续显示此警告。这是一项安全措施。

AFAIK 可能有一个注册表黑客来解决这个问题。但我不建议您这样做,因为它会使您面临 Excel 中存在此功能的安全问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2013-08-01
    • 2014-11-30
    相关资源
    最近更新 更多