ASP.NET Excel скачать файл по нажатию кнопки - PullRequest
3 голосов
/ 30 июля 2011

В предисловии все это происходит в локальной интрасети, которая ни в коем случае не требует подключения к Интернету.

У меня есть база данных, по которой я запускаю запрос, после чего пользователь нажимает кнопку «Загрузить электронную таблицу», которая создает / отправляет электронную таблицу. Создание электронной таблицы работает нормально, но после многих попыток я не могу загрузить файл. Вот что я попробовал:

  • Изменение объектов ответа / заголовка
    • TransmitFile
    • WriteFile
    • BinaryStream
    • Перенаправление
  • Javascript Redirect
    • Response.Write (код JavaScript)

В большинстве случаев в результате создается файл Excel, но не происходит перенаправление / загрузка. В случае Response.Redirect (), если это веб-сайт, он прекрасно работает, но если это перенаправление в файл: ///, то он вызывает исключение потока, но не более подробно.

Я подозреваю, что это связано с жизненным циклом документа ASP.NET, но, боюсь, я недостаточно опытен с ASP.NET, чтобы знать наверняка.

Ответы [ 2 ]

17 голосов
/ 30 июля 2011
FileInfo file = new FileInfo(PathToExcelFile);
if (file.Exists)
{
   Response.Clear();
   Response.ClearHeaders();
   Response.ClearContent();
   Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
   Response.AddHeader("Content-Type", "application/Excel");
   Response.ContentType = "application/vnd.xls";
   Response.AddHeader("Content-Length", file.Length.ToString());
   Response.WriteFile(file.FullName);
   Response.End();
}
else
{
   Response.Write("This file does not exist.");
}
0 голосов
/ 08 августа 2017
ClientScript.RegisterStartupScript(GetType(), "hwa", "window.open('" + System.Configuration.ConfigurationManager.AppSettings["WebSite"].ToString() + "Document/SummaryReport/" + FileName + "','_blank');", true);

Это код загрузки файла Excel при нажатии кнопки. так что теперь легко загрузить файл Excel с помощью кода C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...