Экспорт данных в CSV в режиме разбивки на страницы / сортировки / фильтрации

Я пытаюсь экспортировать ag-grid данные в CSV.

Проблема в том, что он экспортирует только видимые данные ИЛИ данные в памяти, полученные от HTTP-вызова, с учетом paginationPageSize, maxBlocksInCache, cacheBlockSize и т. Д. В сетке. Не весь набор данных.

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

  1. [экспорт] Экспорт в CSV всех страниц клиентской пагинации
  2. экспорт данных agGrid

Есть ли способ добиться этого? Или это вообще невозможно?


person Paritosh    schedule 28.12.2017    source источник
comment
Я думаю, что только данные, видимые в области просмотра, могут быть экспортированы в csv / excel, потому что все данные недоступны одновременно для разбивки на страницы на стороне сервера.   -  person Niladri    schedule 30.12.2017
comment
данные загружаются при прокрутке по запросу.   -  person Niladri    schedule 30.12.2017


Ответы (1)


Вот как я решил это -

  1. получить все нужные строки из источника данных
  2. клонировать объект gridapi
  3. возьмите кеш на стороне сервера из клонированного gridapi
  4. обработать его так, чтобы он был заполнен вашими данными
  5. запустить экспорт в Excel метод на клонированной gridapi
  6. ...
  7. ВЫГОДА

const gapi = cloneDeep (this.gridApi); // клонировать gridApi

константные блоки = gapi ['serverSideRowModel']. rootNode.childrenCache.blocks; // обозначение объекта для подавления частного предупреждения / err

  // swap rows cache with fetched data
  for (let i = 0, j = 0; i < Math.ceil(results.length/this.paginationPageSize); i++) {
    // we alter relevant block, or if it is not loaded yet we clone 1st one and alter it
    const block = blocks[i] || cloneDeep(blocks[0]);  
    block.rowNodes.forEach(n => n.data = results[j++]);
    blocks[i] = block;
  }
  gapi['serverSideRowModel'].rootNode.childrenCache.blocks = blocks;

  gapi.exportDataAsExcel(params);
person Sergey Sob    schedule 09.06.2020