GridView Экспорт в Excel экспортирует всю страницу aspx - PullRequest
3 голосов
/ 05 марта 2012

Я пытаюсь экспортировать содержимое gridview в Excel. У меня есть код:

public void ExcelDownload(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "UTF-8"; 
        Response.AppendHeader("Content-Disposition", "attachment;filename=MailingList.xls");
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
        Response.ContentType = "application/ms-excel";
        this.EnableViewState = false;
        System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("EN-US", true);
        System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
        System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
        MailingList.RenderControl(oHtmlTextWriter);
        Response.Write(oStringWriter.ToString());
    }

, который запускается при нажатии на ссылку. Это прекрасно работает, за исключением того, что он экспортирует всю веб-страницу, а не только gridview (MailingList). Кто-нибудь знает как это исправить?

1 Ответ

2 голосов
/ 05 марта 2012

Технически говоря, это не экспорт в Excel, но вы отправляете HTML-код с неправильными заголовками, чтобы обмануть браузер, чтобы открыть этот контент с помощью Excel. Если вы придерживаетесь этого решения, вы должны визуализировать только GridView на отдельной странице aspx.

У этого решения могут быть проблемы, Excel сам предупредит пользователя о том, что содержимое отличается от расширения, потому что вы отправляете html, а заголовки ответа говорят, что это файл Excel. И я могу поспорить, что некоторые программы защиты от вредоносных программ на клиенте или что-то подобное на сервере будут блокировать этот ответ, поскольку передача содержимого, отличного от заявленного в заголовках, является известным поведением вредоносных программ.

Лучше использовать NPOI (xls) или / и EPPlus (xlsx) и полностью контролировать экспорт в Excel.

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