При экспорте в Excel из ASP.NET создаются файлы, нечитаемые с помощью Excel Viewer - PullRequest
1 голос
/ 01 июня 2010

Я хочу вывести некоторые динамические данные с веб-сайта ASP.NET в Excel. Я обнаружил, что самый простой способ, который не требует использования Excel XML или установки Excel на сервер, - это вывод данных в виде таблицы и указание application / vnd.ms-excel type .

Проблема в том, что когда я делаю это и пытаюсь открыть файл в Excel Viewer, я получаю следующее сообщение об ошибке:

Microsoft Excel Viewer не может открыть файлы этого типа.

Тогда ничего не открывается.

Даже самый простой код, такой как:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=Example.xls");
    Response.ContentType = "application/vnd.ms-excel";
    StringWriter stringWriter = new System.IO.StringWriter();
    HtmlTextWriter htmlTextWriter = new System.Web.UI.HtmlTextWriter(stringWriter);
    dataGrid.RenderControl(htmlTextWriter);
    Response.Write("<html><body><table><tr><td>A</td><td>B</td></tr><tr><td>C</td><td>D</td></tr></table></body></html>");
    Response.End();
}

выдает ту же ошибку.

Что может вызвать такое поведение? Это потому, что Viewer не может читать такие файлы, а полная версия Excel может?

Ответы [ 2 ]

2 голосов
/ 01 июня 2010

Вы никогда не хотите идти по пути установки Excel на сервер. Интерфейс COM может работать без пользовательского интерфейса, но он не предназначен для этого, и вы можете получить большое количество зависших экземпляров EXCEL.EXE на вашем сервере, если возникнет какая-либо ошибка. Он также не работает с идентификаторами пула приложений IIS 7.5 и не работает с Server Core.

Идеальным решением является использование стороннего компонента, который может создавать двоичные (или OOXML) файлы Excel. SyncFusion и Aspose являются двумя основными поставщиками таких инструментов. В итоге вы получите файлы, которые будут работать во всех версиях Excel, а также в других программах, таких как OpenOffice, Google Docs, Outlook Web App и т. Д.

1 голос
/ 01 июня 2010

Excel Reader может открывать только файлы Excel. Вы действительно не экспортируете его как файл Excel, вы экспортируете его как CSV или HTML. Это не то же самое.

EDIT

Вы пробовали это Экспорт в Excel?

...