我正在使用jQuery的DataTable 1.10.19和Buttons 1.6.1。导出到excel工作表时,整数列值导出错误,不存在
一列引用号是后端每行生成的唯一编号。以下是示例
实际列包含的值存在于(HTML)表中,并且对于同一行,导出时,该列中还有另一个值。
我检查了,图案也不一样。即,在第一行中,值增加1(与第一行中一样),而在第二行中,值减小1。在最后一行中,值减小5。
注意:同一表具有相同的值,当导出为PDF时,数据将正确导出。
答案 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'的单元格值(长整数)前缀/连接起来