数据表导出为具有数据类型的excel

时间:2018-09-24 11:56:26

标签: javascript jquery excel datatables

我有一张桌子:

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

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

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个示例,它们并不能说明太多,因此,我将感谢代码示例,而不是指向我已经阅读了几个小时的文档的链接。

1 个答案:

答案 0 :(得分:0)

如上所述,我相信您需要将这些值转换为可识别的值。问题是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/