Имея некоторые проблемы с экспортом в загружаемый контент Excel, используя AngularJS & ASP.NET MVC. Мои конечные результаты ничего не происходит. МетодЭкспорт в Excel не работает
Пример ASP.NET контроллера:
[HttpPost]
public ActionResult ExportToExcel(Model form)
{
var gv = new GridView();
gv.DataSource = _service.getSomeStuff(form);
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=Stuff.xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
var sw = new StringWriter();
var htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
byte[] temp = System.Text.Encoding.UTF8.GetBytes(sw.ToString());
return File(temp, "application/ms-excel");
}
Угловая Метод управления: -> срабатывает через нг щелкните обработчик
function exportToExcel() {
$http.post('/Controller/ExportToExcel/', vm.Model)
.success(function (data) {
})
.error(function (data) {
alerts.error(data);
});
}
Вид:
<a href="" ng-click="vm.exportToExcel()">click me</a>
Любые предложения о том, что Возможно, я ошибаюсь?
вы вызываете 'Response.End()' перед тем, как вы возвращаете файл. Я предполагаю, что вызывает проблемы – DLeh
@ user167698, используйте либо «Response.ClearContent(); Response.Buffer = true; Response.AddHeader ("content-disposition", "attachment; filename = Stuff.xls"); Response.ContentType = "application/ms-excel"; Response.Charset = ""; var sw = new StringWriter(); var htw = new HtmlTextWriter (sw); gv.RenderControl (htw); Response.Output.Write (sw.ToString()); Response.Flush(); Response.End(); ' \t или' byte [] temp = System.Text.Encoding.UTF8.GetBytes (sw.ToString()); return Файл (temp, "application/ms-excel"); '. Не используйте оба. – yW0K5o
К сожалению, я пробовал с и без Response.End(). Никакой разницы в результате. Метод «ExportToExcel (Model form)», кажется, создает загрузку, если вызван из стандартной формы submit. – user167698