Экспорт Datatables, чтобы преуспеть с типами данных - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть таблица:

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 голосов
/ 24 сентября 2018

Как уже упоминалось, я считаю, что вам нужно преобразовать значения во что-то узнаваемое.Проблема в 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...