【问题标题】:How to use table2excel.js plugin to download HTML table into Excel如何使用 table2excel.js 插件将 HTML 表格下载到 Excel 中
【发布时间】:2015-07-18 10:20:10
【问题描述】:

我正在使用 table2excel.js 插件以 JavaScript 将 HTML 表格下载到 Excel。下载表格时,我收到消息:“Excel 无法打开文件 'Test.xlsx',因为文件格式或文件扩展名无效。验证文件没有损坏并且文件扩展名与文件。”当我手动将下载文件的名称更改为“Test.xls”时,我可以正常打开文件(带有文件格式和扩展名不匹配的小警告)。

这里是 table2excel.js 的链接:https://github.com/rainabba/jquery-table2excel/blob/377b933ae6b04f4c1826acc24a2bb0a049933f8b/dist/jquery.table2excel.js

我尝试过的一些事情:
1. 我将 e.uri 从 "e.uri = data:application/vnd.ms-excel;base64," 更改为 "e.uri = "data:application/msexcel;base64,"
2.我变了
. . . 'return ( settings.filename ? settings.filename : "table2excel") + ".xlsx"';到
. . . 'return ( settings.filename ? settings.filename : "table2excel") + ".xls"';
(进行此更改时,该文件被保存为 Test.xls.xlsx 并且打开 .xlsx 文件仍然存在相同的问题)。

如何将文件保存为 .xls 而不是 xlsx?或者有没有办法在将文件保存为 .xlsx 的同时完成这项工作(大概是通过将格式与 .xlsx 扩展名匹配)?

注意:如果重要的话,文件 Test.xlsx 是“普通的”,只有一堆单元格中的文本。没有花哨的格式、字符等。文本全是字母数字,只有几个特殊字符,例如:",.#'/@"

如果有任何想法,非常感谢!

【问题讨论】:

  • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet?
  • 谢谢,但很遗憾,这不起作用。还是一样的问题。
  • 您是否将Base64 字符串写入文件?
  • 我实际上不确定“Base64”字符串是什么或做什么。我对这一切都很陌生。我试图写入 excel 文件的唯一内容是表格的内容。您知道 Excel 如何尝试解释电子表格文件格式是否与扩展名 .xls 或 .xlsx 匹配?
  • 在记事本中打开输出会看到什么?如果没有“特殊”字符,则您已将 Base64 输出写入文件而不是 Excel 文档。

标签: javascript html excel


【解决方案1】:

我也有同样的问题,我把jquery.table2excel.js下面的方法改成:

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

之后我可以打开 xls 文件,但会提示不同格式的文件扩展名消息,也许更改标题即可。

【讨论】:

  • Excel 可以正常打开,但如何删除该警告?
【解决方案2】:

在源js文件中,我不得不改变

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

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

【讨论】:

    【解决方案3】:

    这是一个很棒的插件,但它有一个错误导致它停止工作。

    谢天谢地,因为它是 javascript,你可以自己更正它。

    将 jquery.table2excel.js 文件加载到文本编辑器中。

    在第 130 行附近,您会找到名为 getFileName 的函数。

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

    更正为:

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

    我猜作者无法决定如何命名他们的变量。

    遗憾的是,您总是会收到有关扩展名的文件格式不正确的警告。这是因为xls文件通常是二进制文件,但是table2excel利用了excel可以加载html的特性。

    【讨论】:

      猜你喜欢
      • 2019-05-12
      • 2017-07-14
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 2011-09-27
      相关资源
      最近更新 更多