Эм...Ну и? А если все это дело хранить в сессиях,то выборку делаем только й раз...
Вам про Фому, Вы про Ерему С чего один то раз? Я нажал f5 надо снова найти сессионный файл и десерилизовать его Точно также надо выполнить фактически один запрос(про КЭШ MySQL Вам вроде рассказали). Вот как бы и все. Да и с БД возможны проблемы, но их решать можно по мере поступления
Вам не кажется, что это немного смешно? 1000 файлов и что? Храните сессии в БД. Хотя БД это те же файлы. Что Вы выиграете? В принципе, если по любому используется БД, может проще сессии там и хранить?
Если таблица не дико большая, можно взять класс excelWritter, что-типа такого название. Он "старый", но работает стабильно. Если подменять html->xls то сообщение, что файл "The file you are trying to open is in a different format than specified by the file extension…" не исчезнет