У меня есть следующий код:
Response.ClearContent();
Response.AddHeader( "Content-type", "application/vnd.ms-excel");
Response.AddHeader("content-disposition", "attachment;filename=test.xls");
Response.ContentType = "application/excel";
var swr = new StringWriter();
var tw = new HtmlTextWriter(swr);
grd.RenderControl(tw);
Response.Write(swr.ToString());
Response.Flush();
Response.End();
tw.Close();
swr.Close();
Это действие запускается из следующего бита кода jquery:
<img src="../../../../Content/images/Excel-icon.png"
onclick = "alert ($('#Filter').serialize());
$.ajax({
type: 'POST',
url: '<%=Url.Action( "Excel") %>',
data: $('#Filter').serialize(),
success : function (data, textStatus, jqXHR)
{ alert (data);},
error: function (jqXHR, textStatus, errorThrown)
{ alert (textStatus + ' ' + errorThrown);}
});" />
Я подтвердил с помощью fiddler, что заголовки имеют ожидаемые значения. Я также вижу данные в фиддлере, используя веб-представление.
Кроме того, когда я показываю содержимое данных из функции успеха, он имеет необработанный HTML-код для таблицы, которую я пытаюсь экспортировать в Excel.
Заранее спасибо за помощь.