AsviS
@AsviS
начинающий

Как в DataTables jQuery сделать экспорт в csv файл?

Здравствуйте!
у меня есть таблица:

<table id="urllist" class="table table-striped table-bordered dt-responsive nowrap" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>IP</th>
                <th>Date time</th>
                <th>Lang</th>
                <th>uid</th>
                <th>URL</th>
                <th>usrid</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>IP</th>
                <th>Date time</th>
                <th>Lang</th>
                <th>uid</th>
                <th>URL</th>
                <th>usrid</th>
            </tr>
        </tfoot>
    </table>


и подключаю datatables:

$(document).ready(function() {

    var buttonCommon = {
        exportOptions: {
            format: {
                body: function ( data, row, column, node ) {
                    // Strip $ from salary column to make it numeric
                    return column === 5 ?
                        data.replace( /[$,]/g, '' ) :
                        data;
                }
            }
        }
    };

    $('#urllist').DataTable( {
        "processing": true,
        "serverSide": true,
        "responsive": true,
        "dom": 'Bfrtip',
        "buttons": [
            $.extend( true, {}, buttonCommon, {
                "extend": 'excelHtml5'
            } ),
            $.extend( true, {}, buttonCommon, {
                "extend": 'csvHtml5'
            } )
        ],
        // "buttons": [
        //     'csv', 'excel'
        // ],
         "scrollX": true,
        "ajax": "server_processing.php"
    } );

} );

server_processing.php -> файл который тянет данные из БД
вот скрин что получилось:
d1b33af9ee754c54bcb803252e919820.jpg
когда кликаю по кнопке csv или exel то экспортирует только первые 10 записей, а мне нужно экспортировать все записи из таблицы (а их там больше 200 000), + учитывать поиск и сортировку.
Как мне такое реализовать??
  • Вопрос задан
  • 907 просмотров
Пригласить эксперта
Ответы на вопрос 1
vawsan
@vawsan
Frontend Developer
Плагины DataTables поддерживают только экспорт текущей страницы. То есть они на лету формируют нужный вам документ из данных, что сейчас присутствуют в DOM-дереве.
Для того, чтобы экспортнуть всю таблицу, вам нужно сделать кастомную кнопку(это поддерживается в DataTables) и по клику сделать запрос серверного метода, который сгенерит csv через стороннюю библиотеку на основе всех данных из БД.
То есть алгоритм такой:
  1. Создаем кнопку
  2. По клику запрашиваем ajax'om api метод
  3. Метод собирает все данные из БД
  4. Оборачивает их сторонней либой в формат csv и кладет во временную папку
  5. А потом возвращает ссылку на файл в виде диалогового окна для сохранения файла
  6. После загрузки файл удаляется


По другому в этом плагине никак.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы