Нужно сделать API, возвращающее метаданные (количество строк, например) и сами данные кусками. Далее изобразить либо страницы на основе этих данных, либо виртуальный скролл с получением куска данных для страницы или скролла через AJAX.
Для получения excel - либо отдельный эндпоинт, формирующий это все на сервере, либо сборка кусками на клиенте (возможно, клиент лопнет, если только не потоком писать в csv, а на сервере можно потоком записать xml и заархивировать его, получив xlsx)