Экспортный репитер в Excel - PullRequest
0 голосов
/ 12 января 2010

Я пытаюсь экспортировать свой репитер в Excel, и вот мой код ...

    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    string attachment = "attachment; filename=file.xls";
    Response.ClearContent();
    Response.AddHeader("content-disposition", attachment);
    Response.ContentType = "application/vnd.ms-excel";
    rpt.RenderControl(htw);
    Response.Write(sw.ToString());
    Response.Flush();
    Response.End();

Когда я пытаюсь открыть файл, получаю эту ошибку

The file you are trying to open, 'file.xls', is in a different format than specified 
by   the file extension. Verify that the file is not Corrupted and is from a trusted 
source   before opening the file. Do you want to open the file now?
Yes   No Help option are available

Что не так в моем коде или Что я должен сделать, чтобы решить эту проблему. Спасибо

Ответы [ 2 ]

2 голосов
/ 12 января 2010

Вы устанавливаете тип содержимого на application/vnd.ms-excel, но отправляете содержимое HTML в потоке ответов при вызове метода RenderContents. Вам может понадобиться библиотека для создания файлов Excel.

0 голосов
/ 12 января 2010

Попробуйте обернуть ваш контент в это:

StringBuilder sb = new StringBuilder("");
sb.Append("<HTML xmlns:x=\"urn:schemas-microsoft-com:office:excel\"><HEAD>");
sb.Append("<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");
sb.Append("<!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>");
sb.Append(title);
sb.Append("</x:Name><x:WorksheetOptions><x:Print><x:ValidPrinterInfo/></x:Print></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--> </HEAD><BODY>");
sb.Append(content);
sb.Append("</BODY></HTML>");
...