【问题标题】:jQuery DataTable export to excel is exporting wrong column valuesjQuery DataTable 导出到 excel 正在导出错误的列值
【发布时间】:2019-12-18 13:40:46
【问题描述】:

我正在使用 jQuery 的 DataTable 1.10.19 和 Buttons 1.6.1。导出到excel表格时整数列值导出错误,不存在

一列参考编号是后端每行生成的唯一编号。以下是示例

实际列包含值,存在于(HTML)表中&对于同一行,导出时,列中存在另一个值。

我查了,图案也不一样。即在一行中,值增加 1(如在第一行中),而在第二行中,值减少 1。在最后一行中,值减少 5。

注意:具有相同值的同一张表,当导出为 PDF 时,数据会正确导出。

【问题讨论】:

标签: datatables export-to-excel


【解决方案1】:

您应该意识到所有导出的值都以0 结尾。实际上,它们都四舍五入到 15 个非零位。

如果您将 Actual 列中的任何值直接输入到 Excel 中,您会看到其最后一位数字已替换为 0

关于这个主题的一个很好的articles 提供:

你会在 Excel 中以多种方式注意到这个标准(IEEE 754),但主要是,如果你写一个超过 15 位的整数(这很可行),excel 将转换从第 16 位开始的所有整数归零。

因此,当您将 1234567890123456789 放入单元格中时,您会得到 1234567890123450000。对于 1234567890.123456789 也是如此,这将得到 1234567890.123450000!这本身就是一个很大的缺点,但还不止于此,这个限制会影响 Excel 的所有部分,包括计算。

有没有办法解决这个问题

简短的回答是否定的。长答案是,您可以将更长的数字存储为文本(因此开始在 Excel 中使用撇号编写),您将看到超过 15 个整数,但如果您想将它们转换回数字并用它们进行计算,您将再次仅适用于 15 个整数!

使 Excel 更精确的唯一方法是使用加载项。有很多,这里有一个例子:xlPrecision

【讨论】:

  • 谢谢@Sergey 我之前不知道这个关于 excel 的 15 位数限制。我通过将单元格值转换为文本格式而不是整数解决了这个问题
【解决方案2】:

在阅读了 Sergey Nudnov 先生的回答后,我想出了以下解决方案

    buttons: [
               {
                   "extend": 'excel', "text": ' Excel', "className": 'btn btn-flat btn-success fa fa-file-excel-o'
                  , exportOptions: {
                      columns: [':visible']
                        , format: {
                            body: function (data, row, column, node) {
                                var cellData;
                                cellData = data.indexOf("<") < 0 ? data : $(data).text();   // Some cells contains html elements. need to strip off
                                return column === 2 ? '\u200C' + cellData : cellData;
                            }
                        }
                  }
            ]

注意:column === 2 是需要从整数转换为字符串的列的索引。只需使用 '\u200C' 前缀/连接单元格值(长数字)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 2021-07-23
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多