【问题标题】:Datatables export to excel with data types数据表导出到具有数据类型的 excel
【发布时间】:2018-09-24 11:56:26
【问题描述】:

我有一张桌子:

Name     Reg.number   Limit        Date
Jon      123455665    100 000.00   24.09.2018
Foo      123423423    55 000.00    23.09.2018

我正在使用数据表创建 excel,它工作正常,但我需要在导出的 excel 中指定数据类型。 现在在 excel 中,所有数据都被认为是“通用的”,但我需要它来识别:

Jon = text
Reg.number = text
Limit = Number (In perfect scenario with thousand separator and 2 digits after .)
Data = date

到目前为止,这是我的代码:

<script>

$(document).ready(function() {
    $('#datatable').DataTable();

    $.fn.dataTable.moment( 'D.M.YYYY' );

    var table = $('#datatable-buttons').DataTable({
        lengthChange: false,
        buttons: ['excel'],
    });

    table
        .order( [4 , 'desc'] )
        .draw();

    table.buttons().container()
        .appendTo('#datatable-buttons_wrapper .col-md-6:eq(0)');
} );

所以我目前的输出是: Excel 中的所有数据都被视为“一般”数据。

我想要的输出是: Excel 根据数据类型考虑所有列。文本、数字(十进制)、日期。

我真的无法在数据表文档中找到答案。他们实际上有 1-2 个示例,但并不能说明太多,因此我会很感激代码示例,而不是我过去几个小时一直在阅读的文档的链接。

【问题讨论】:

  • 您使用的是什么版本的按钮、buttons.html5 和 DataTables?
  • DataTables 1.10.15 DataTables 1.2.1 的按钮
  • 尝试升级到最新的 1.5.3。 excel导出有很大改善。如果这不起作用,您可以强制列类型。
  • 感谢您的建议。如何强制列类型?
  • 是的,我在控制台中遇到了很多错误

标签: javascript jquery excel datatables


【解决方案1】:

如前所述,我相信您需要将这些值转换为可识别的东西。问题是 Excel(或其他阅读器)当然无法弄清楚“55 000.00”应该被视为一个数字。作为一个人类,我也不知道如何解释这个:)

exportOptions: {
  format: {
     body: function(data, row, column, node) {
        switch (column) {
          case 2 :
            return data.replace(/ /, ',')
            break
          case 3 : 
            return moment(data, 'DD.MM.YYYY').format('MM/DD/YYYY')
            break
          default :
            return data
            break
        }
     }
  }    
}    

根据您的需要进行修改。做了一个小提琴 -> https://jsfiddle.net/sv42o8yw/

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-05-13
  • 2011-12-22
  • 2020-02-25
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多