Кроме того, я бы не стал отбрасывать вариант с JS. Грузить информацию по одной ячейке действительно очень медленно и накладно, но, вероятно есть способы организовать передачу иначе.
Не знаю как это работает в ворд, но при передаче в ексель точно можно воспользоваться некими источниками данных, odbs или ado, вероятно, или какими-то ole контейнерами. Если заполнить источник и уже потом передать его ексель, загрузка происходит в разы быстрее. Деталей реализации назвать не смогу, но мы пробовали грузить отчеты сами (по ячейкам), а потом воспользовались сторонней утилитой. Она нас сделала.