【问题标题】:export as .xls file not work when large data大数据时导出为 .xls 文件不起作用
【发布时间】:2013-10-16 10:58:22
【问题描述】:

我正在使用 javascript 代码将 html 表导出到 .xls 文件。它在 crome 中工作,当数据不大时。但是当数据很大时,它会向我显示类似的错误

我用于将表格导出为 .xls 文件的代码如下:

function exportDiv() {
    //working on crome perfectly       
        var dt = new Date();
        var day = dt.getDate();
        var month = dt.getMonth() + 1;
        var year = dt.getFullYear();
        var hour = dt.getHours();
        var mins = dt.getMinutes();
        var postfix = day + "." + month + "." + year + "_" + hour + "." + mins;
        var a = document.createElement('a');
        var data_type = 'data:application/vnd.ms-excel';
        var table_div = document.getElementById('tbl-1');
        var table_html = table_div.outerHTML.replace(/ /g, '%20');
        a.href = data_type + ', ' + table_html;
        a.download = 'exported_table_' + postfix + '.xls';
        a.click();
        e.preventDefault();

}

我也有足够的 4 GB 内存,所以我认为这不是内存限制问题。

您能帮我了解如何导出大数据吗? 编辑:我也用过这种方式

 var table_html=encodeURIComponent(table_div.outerHTML);

但还是会出现同样的错误。

【问题讨论】:

  • 不回答您的问题,但您可以使用encodeURIComponent() 而不是自己替换特殊字符。
  • 我想进入无限循环
  • @Arun Killu:只有一次调用此函数并且我刚刚将表格下载为 .xls 文件,那么无限循环在哪里?
  • @user1181940 对我来说你的代码运行良好
  • @Arun Killu:此代码也适用于我,但问题是当表中的数据过多时,如表中的 500 行,则会显示如上所示的错误页面

标签: javascript xls


【解决方案1】:

您很可能已达到 Chrome 中 2 MB 的网址限制。你可以在这里阅读 - issue link。我建议您在 Firefox 中尝试您的应用,如果它可以工作,那就是问题所在。

【讨论】:

  • 但是我的代码在firefox中不起作用。当我点击导出按钮时它不会做任何事情。我也检查了错误日志,但没有任何错误。
【解决方案2】:

Excel 表的字符数限制为 32767 个字符,类似于 Excel 单元格。

参考链接:http://office.microsoft.com/en-in/excel-help/excel-specifications-and-limits-HP010073849.aspx

【讨论】:

  • 不是一个excel文件,它只是一个*.htm文件,可以用Excel打开。它会警告您扩展名和文件格式不匹配。
  • 工作表有 1,048,576 行 x 16,384 列。我有 3500 行和 30 列的表格。所以我认为它不会限制我爆炸。
【解决方案3】:

我在点击按钮时调用了 tableToexcel 函数,如下所示,它在 firefix 中运行良好。

<a id="dlink"  style="display:none;"></a>

    var tableToExcel = (function () {
            var uri = 'data:application/vnd.ms-excel;base64,'
            , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
            , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
            , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
            return function (table, name, filename) {
                if (!table.nodeType) table = document.getElementById(table)
                var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }

                document.getElementById("dlink").href = uri + base64(format(template, ctx));
                document.getElementById("dlink").download = filename;
                document.getElementById("dlink").click();

            }
        })();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 2012-11-05
    相关资源
    最近更新 更多