打开从html表导出的xls文件时发出警告

Warning when opening xls file which is exported from html table

本文关键字:文件 xls 警告 html      更新时间:2023-09-26

我使用了以下代码。我可以下载扩展名为.xls的文件。当我打开这个下载的文件时,我收到这个警告:

您试图打开的文件"Statement.xls"位于另一个格式超过文件扩展名指定的格式。验证文件是否未损坏,并且在打开文件之前来自受信任的来源。做你想现在打开文件吗?

Javascript代码:

var blob = new Blob([document.getElementById('exportable').innerHTML], {
        type: "application/vnd.ms-excel;" });
saveAs(blob, "Statement.xls");`

HTML代码:

`<table id="exportable">
   <tbody>
    <tr><th>ColumnOne</th><th>ColumnTwo</th><th>ColumnThree</th></tr>
    <tr><td>row1Col1</td><td>row1Col2</td><td>row1Col3</td></tr>
    <tr><td>row2Col1</td><td>row2Col2</td><td>row2Col3</td></tr>
    <tr><td>row3Col1</td><td>row3Col2</td><td>test</td></tr>
  </tbody>
</table>`

外部库:

https://rawgithub.com/eligrey/FileSaver.js/master/FileSaver.js

Office和Excel能够处理两种不同的文件格式。由于这些格式与内部完全不同(旧格式是二进制的,新格式只是压缩的XML),因此为这些格式分配了不同的扩展和mimetype。显然,您正在创建一个具有新格式的文件,并为其指定旧的扩展名。Excel对此表示不满。

将代码更改为如下所示:

var blob = new Blob([document.getElementById('exportable').innerHTML], {
        type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
saveAs(blob, "Statement.xlsx");

为了便于学习,您可能希望使用十六进制编辑器查看您创建的文件。其他人也有类似的问题,请查看此处:https://github.com/eligrey/FileSaver.js/issues/139

保存扩展名为*.xls的文件时,文件类型应设置为"application.xls"

由于文件类型和扩展名将匹配,因此不应该收到任何警告。