Я думаю, что вы выбираете сложный маршрут, когда решение достаточно простое (хотя я могу пропустить некоторые требования)
Если вы хотите создать Excel, просто вызовите страницу asp, которая делает следующее:
Response.clear
Response.AddHeader "content-disposition", "attachment; filename=myexcel.xls"
Response.ContentType = "application/excel"
'//write the content of the file
Response.write "...."
Response.end
Это запустит процесс загрузки в браузере без необходимости создания дополнительного вызова, JavaScript или чего-либо еще
См. этот вопрос для получения дополнительной информации о формате, который вы выберете для создания Excel.
Редактировать
Поскольку Томас обновляет вопрос, и реальная проблема заключается в том, что создание файла занимает 4 минуты, решение может быть следующим:
Предложите пользователю отправить файл по электронной почте (если это работоспособное решение на вашем сервере или хостинге).
Создайте файл асинхронно и сообщите пользователю, когда будет завершена генерация файла (с помощью вызова ajax, как SO, когда другой пользователь добавил ответ)
Для генерации файла на сервере
'//You should change for a random name or something that makes sense
FileName = "C:\temp\myexcel.xls"
FileNumber = FreeFile
Open FileName For Append As #FileNumber
'//generate the content
TheRow = "...."
Print #FileNumber, TheRow
Close #FileNumber
Для удаления сгенерированных временных файлов
Я использую Empty Temp Folders бесплатное приложение, которое я ежедневно запускаю на сервере, чтобы заботиться о сгенерированных временных файлах. (Опять же, это зависит от вашего сервера или хостинга)
О безопасности
Создайте файлы, используя случайные числа или GUI для легкой защиты. Если данные конфиденциальны, вам нужно будет загрузить файл со страницы ASP, но я думаю, что вы снова столкнетесь с той же проблемой ... (4 минуты для загрузки)