Вы можете обойти эту проблему, поместив ее в контроллер. Позволяет поместить HTML в представление, а затем отправить его в браузер.
public ActionResult Excel()
{
this.Response.AddHeader("Content-Disposition", "Employees_{0}.xls".FormatWith(DateTime.Now.ToString("ddMMyyyy_HHmmss")));
this.Response.ContentType = "application/vnd.ms-excel";
//Do model stuff
Model model = new Model();
return View(model);
}
Звучит хаки? Это немного. У меня была та же проблема, о которой вы упомянули, и вопрос, на который указывает Джефф, тоже мой. :)
Как уже упоминалось в моем комментарии, вы должны убедиться, что ваше мнение не имеет следующего:
<html>
<head>
...
</head>
<body>
</body>
</html>
Ничего из этого не требуется, и это может привести к тому, что ваша страница будет отображаться в виде HTML, а не в виде документа Excel. Таким образом, все, что вы визуализируете, это фактические теги таблиц и все, что находится внутри.