экспортировать HTML-таблицу в кодировку Excel - PullRequest
4 голосов
/ 05 декабря 2011

У меня есть задача написать код для экспорта HTML-таблицы с заголовками, чтобы преуспеть.

Я придумал код serverSide, подобный этому:

Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=myexcel.xls");
    Response.ContentType = "application/ms-excel";
    System.IO.StringWriter sw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw);
    tbPanel.RenderControl(hw);
    Response.Write(sw.ToString());
    Response.End();

Работает довольно хорошо, но есть некоторые символы utf-8 (русский язык), которые не отображаются правильно в файле Excel.

Есть идеи, что я могу с этим поделать?

Спасибо за помощь

Ответы [ 2 ]

6 голосов
/ 05 декабря 2011

Измените свой код на следующий:

Response.Clear();
Response.AddHeader("content-disposition","attachment;filename=myexcel.xls");   
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());

System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw);

FormView1.RenderControl(hw);

Response.Write(sw.ToString());
Response.End();

Редактировать

Когда я публиковал свой ответ, я увидел, что вы уже нашли такое же решение.Сообщение об ошибке, которое вы видите, объясняется здесь: Предупреждение о расширении Excel 2007 при открытии книги Excel с веб-сайта и, к сожалению, нет способа обойти ее.

Изpost:

Подсказка оповещения «по замыслу», но взаимодействие действия отмены и попытки IE открыть файл снова является известной проблемой, которая будет расследована для будущего исправления.

0 голосов
/ 05 декабря 2011

Я добавил:

    Response.Clear();
Response.AddHeader("content-disposition","attachment;filename=Test.xls");   
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());

И теперь все работает нормально, за исключением того, что при открытии файла Excel появляется предупреждение, что ошибка в том, что файл имеет другой формат, чем расширение. Могу ли я избавиться от этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...