jQuery DataTable导出到excel导出错误的列值

时间:2019-12-18 13:40:46

标签: datatables export-to-excel

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

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

enter image description here

实际列包含的值存在于(HTML)表中,并且对于同一行,导出时,该列中还有另一个值。

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在阅读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'的单元格值(长整数)前缀/连接起来