【问题标题】:Retain decimal seperator on export excel in Datatables在数据表中的导出 excel 上保留小数点分隔符
【发布时间】:2020-06-10 10:34:05
【问题描述】:

这是我在数据表中得到的值。

Cuenta  Nombre Cuenta       Oct18   Dec18   Sep19   Oct19   M$      M%  A$      A%
11      Activos Liquidos    5732,12 6950,89 5879,21 5965,02 85,82   1.4 232,91  4.06   

导出 excel 时,数据的小数位会转换为 5732.12 6950.89 ..etc。我需要保留我正在使用数据表的小数。

我使用了这个代码:

{
      extend: 'excel',
      exportOptions: {
          columns: ':visible',
          format: {
              body: function(data, row, column, node) {
                  data = $('<p>' + data + '</p>').text();
                  return $.isNumeric(data.replace(',', '.')) ? data.replace(',', '.') : data;
              }
          }
      }
  }

但它会将我的 4.06 更改为 4,06,这是不正确的。如何做到这一点?谢谢。

更新:

这是我在 excel 中得到的值

【问题讨论】:

  • isNumeric 在带有小数点逗号的数字上失败。然后 Excel 将显示其区域设置中的任何内容。在我的 Excel 上,它是十进制逗号。完整的预期输出是多少?
  • 我已将语言环境设置为西班牙语,但在 excel 中它正在转换为“。”
  • 为什么 4.06 错了?我会认为573.212 是错误的值
  • 还有$('&lt;p&gt;' + data + '&lt;/p&gt;').text();的意义何在

标签: javascript datatables


【解决方案1】:

这有帮助吗?

const fields = "11\tActivos Liquidos\t5732,12\t6950,89\t5879,21\t5965,02\t85,82\t1.4\t232,91\t4.06".trim().split("\t")
  .map(fld => /^\d/.test(fld) ? parseFloat(fld.replace(/,/,".")) : fld);
console.log(JSON.stringify(fields))

【讨论】:

  • 我应该把这个粘贴到哪里?
  • 您需要将.map(fld =&gt; /^\d/.test(fld) ? parseFloat(fld.replace(/,/,".")) : fld); 添加到保存值的数组中。如何获取数组取决于字符串。我猜是制表符分隔
猜你喜欢
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
相关资源
最近更新 更多