Экспорт данных в виде файла Excel из ASP.NET - PullRequest
4 голосов
/ 08 апреля 2010

У меня есть данные, как показано ниже

AAAAAA
BBBBBB
CCCCCC
DDDDDD
EEEEEE

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

С наилучшими пожеланиями,

Ответы [ 5 ]

7 голосов
/ 08 апреля 2010

Вы можете записать данные непосредственно в поток ответов. Установите тип MIME для Excel и запишите данные как:

  • HTML
  • CSV
  • Электронная таблица XML
  • OOXML (.xlsx)

Если вы хотите использовать OOXML, есть библиотеки, такие как Simple OOXML . Обратите внимание, что это формат .xlsx.

Следующий код устанавливает заголовки, необходимые для файла .xls

'Send response with content type to display as MS Excel
context.Response.Clear()
context.Response.Buffer = True

context.Response.AddHeader("content-disposition", String.Format( "attachment;filename={0}", fileName))
context.Response.ContentEncoding = Encoding.UTF8

context.Response.Cache.SetCacheability(HttpCacheability.Private)
context.Response.ContentType = "application/vnd.ms-excel"

'Write to response
context.Response.Write("csv,data,goes,here")

context.Response.End()
0 голосов
/ 08 апреля 2010

NPOI - проект с открытым исходным кодом, который может помочь вам читать / записывать файлы xls, doc, ppt.

Очень простой и правильный формат Excel.

0 голосов
/ 08 апреля 2010

Альтернативой вышеупомянутым решениям является подключение к объекту Excel COM и создание электронной таблицы с использованием их API.

Это будет означать, что на сервере вам нужно будет установить Excel, чтобы другие решения, вероятно, были лучше.

0 голосов
/ 08 апреля 2010

Если не считать автоматизации Excel на вашем сервере, что не рекомендуется, самый простой способ - использовать построитель строк для создания требуемого вывода, а затем записать это в HttpResponse, задав тип содержимого "text / csv", установив соответствующая информация заголовка.

Хотя это не совсем документ Excel, пользователю, загружающему файл, будет предложено открыть его в Excel, если он установлен, или в качестве альтернативы любому другому редактору на основе электронных таблиц.

Следующий фрагмент должен помочь вам:

string docName  = "MyExcelDoc"
StringBuilder sb = new StringBuilder();
sb.AppendLine("AAAAAA");
sb.AppendLine("BBBBBB");

context.Response.ClearContent();
context.Response.ContentType = "text/csv";
context.Response.AddHeader("content-disposition", "attachment; filename=" + docName + ".csv");
context.Response.Write(sb.ToString());            
context.Response.Flush();
0 голосов
/ 08 апреля 2010

Да, вы можете экспортировать информацию в виде файла CSV и дать ему расширение файла Excel. Excel распознает, что это не нативный формат Excel, и позволяет импортировать с предупреждением. Для загрузки вы можете найти в Интернете информацию о регулярных загрузках файлов с пользовательским типом MIME в ASP.NET.

Из-за предупреждающего сообщения вышеупомянутое не является предпочтительным способом. Вы также можете использовать библиотеку для создания собственного файла Excel. Я успешно использовал Aspose.Cells в прошлых проектах.

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