jQuery datatables экспортирует данные в Excel - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь экспортировать напрямую из таблицы данных в Excel.

Начиная с вызова ajax:

displayRecords();
function displayRecords()
{
  $.ajax({
    url: 'process/getRecords.php',
    type: 'POST',
    data: '',
    dataType: 'html',
    success: function(data, textStatus, jqXHR)
    {
      var jsonObject = $.parseJSON(data); 
      var table = $('#resultsTable').DataTable({    
      {
        "data": jsonObject,
        "columns": [
          {"data": "JOB_REFERENCE"},
          {"data": "VOYAGE_REFERENCE"},
          // few more columns
        ],
        "iDisplayLength": 25,
        "scrollY": 500,
        "scrollX": true,
        "bDestroy": true,
        "paging": true,
        "stateSave": true
      }
    },
    error: function(jqHHR, textStatus, errorThrown)
    {
      console.log('fail: '+ errorThrown);
    }
  });

   // button click to export results
   var tableresults = $('#resultsTable').dataTable();

   $("#btnExport").on('click', function(e) 
   {
     e.preventDefault();
     window.open('data:application/vnd.ms-excel,' +
       encodeURIComponent(table[0].outerHTML));
   });
}

Используя все вышеперечисленное, я могу успешно экспортировать результаты изТаблица данных.Я даже могу использовать поиск по фильтру, чтобы перейти к меньшему набору данных и экспортировать результаты.

Я использовал следующую скрипку: http://jsfiddle.net/donpayne/jzdjdo3z/

Проблема, с которой я столкнулся, заключается враскрывающийся список Показать записи данных.Как правило, в раскрывающемся списке установлено значение 10. Независимо от того, отфильтрованы ли вы при поиске или нет, если общее количество записей больше, чем в раскрывающемся списке Показать записи, лист Excel будет возвращать только общую сумму, указанную в раскрывающемся списке.

Вы можете проверить то, о чем я говорю в скрипке.Установите раскрывающийся список Показать записи на 10, а затем экспортируйте в Excel.Если вы заметите, в этой таблице 58 записей.Лист Excel вернет только 10 записей.

Мне нужно, чтобы вернуть все записи.Если у меня 2000 записей, а раскрывающийся список Показать записи установлен на 10, мне нужно, чтобы экспортированный лист Excel включал все 2000 записей.

То же самое, если я отфильтрую поиск примерно до 56 записей;когда я экспортирую в Excel, у меня должно быть в общей сложности 56 записей в этой электронной таблице, независимо от того, какое значение имеет раскрывающийся список Показать записи.

Как уже говорилось, я ссылался на код из скрипки и изменил его так, чтобы он соответствовалмои данные.

1 Ответ

0 голосов
/ 23 мая 2018

Я думаю, что лучшее, что нужно сделать, это удалить пейджинг, затем выполнить экспорт, а затем снова включить пейджинг после того, как все будет сделано.

Я внес пару небольших изменений:

$(function () 
{
    var table = $('#example').DataTable();

    $("#btnExport").click(function(e) 
    {
        table.page.len( -1 ).draw();
        window.open('data:application/vnd.ms-excel,' + 
            encodeURIComponent($('#example').parent().html()));
      setTimeout(function(){
        table.page.len(10).draw();
      }, 1000)

    });
});

Обновленная скрипта: http://jsfiddle.net/jzdjdo3z/176/

Длина страницы документов: https://datatables.net/reference/api/page.len()

Документы с параметрами подкачки: https://datatables.net/reference/option/paging

Я не уверен, почему инициализирую с помощью dataTablesvs DataTables имели значение, но это имело место.Так что следите за этим.

...