2009-02-23 5 views

ответ

3

Изменение ТипСодержимого вашей страницы ASP.Net

Response.ContentType = "application/ms-excel" 
+0

Следует также отметить, что некоторые люди (GASP!) Не имеют превосходства, поэтому, возможно, вам стоит просто сбросить его в CSV и позволить им понять это. – hunter

+0

Возможно, вы также хотите убедиться, что вы выводите необработанную таблицу, которую может понять Excel. –

+0

Вы должны сделать больше, чем это. В противном случае экспортированный «документ excel» будет содержать ссылки на изображения на вашем сайте, фильтры, кнопки и т. Д. – Tundey

0

службы отчетов SQL Server будет лучшим способом для экспорта данных из приложения в Excel.

Если у вас нет доступа к/dont wan't для использования служб отчетов в зависимости от данных, которые вы хотите извлечь/форматировать, возможно, используя структуру CSV вместо Excel, может быть проще всего.

0

Используйте DLLs Microsoft.Office.Interop.Excel для создания файлов Excel с данными, а затем предоставить ссылки для загрузки файлов с помощью метода загрузки Hunter Дэйли ...

0

Как общее решение, вы можете рассмотрите обработчик (ashx) для экспорта - и передайте либо параметры запроса, чтобы воссоздать запрос, чтобы сгенерировать данные или идентификатор, чтобы получить данные из кеша (если они кэшированы). В зависимости от того, достаточно ли CSV для экспорта Excel, вы можете просто форматировать данные и отправить их обратно, установив ContentType, поскольку @Hunter предлагает или использует первичные сборки interop (для чего потребуется Excel на сервере) для создания реальной электронной таблицы Excel и сериализуйте его в поток ответов.

0

Я предпочитаю использовать строку подключения OLEDB.

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Excel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"; 
0

Не уверен, что экспорт страницы, но если вы просто хотите экспортировать набор данных или DataTable

 HttpContext.Current.Response.Clear() 
     HttpContext.Current.Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", fileName)) 
     HttpContext.Current.Response.ContentType = "application/ms-excel" 

     Dim sw As StringWriter = New StringWriter 
     Dim htw As HtmlTextWriter = New HtmlTextWriter(sw) 


     Dim table As Table = New Table 

     table.RenderControl(htw) 

     ' render the htmlwriter into the response 
     HttpContext.Current.Response.Write(sw.ToString) 
     HttpContext.Current.Response.End() 
3

Один из моих самых популярных блогов, как генерировать документ Excel из кода .NET, используя разметка Excel XML (это не OpenXML, это стандартный Excel XML) - http://www.aaron-powell.com/linq-to-xml-to-excel

Я также связать прочь к более простой способ сделать это с VB 9.

Хотя это код .NET 3.5, его можно легко сделать в .NET 2.0 с помощью XmlDocument и таким образом создать узлы.

Тогда просто нужно установить правильные ответные заголовки и потоковое воспроизведение в ответ.

+0

Демоверсия VB9 - это потрясающе! – JBRWilkinson

+0

Просто заметьте, но эта ссылка уже не актуальна ... –

+0

@KyleC исправлено, он использовал URL для моего старого блога –

1

SpreadsheetGear для .NET будет делать это. Вы можете найти кучу живых образцов ASP.NET с источником C# & VB.NET на this page.

Отказ от ответственности: У меня есть SpreadsheetGear ООО

0

Я использую почти точно такой же код, как CodeKiwi. Я бы использовал это, если у вас есть DataTable и вы хотите передать его в клиентский браузер.

Если вы хотите получить файл, вы также можете сделать простой цикл через каждую строку/столбец, создать CSV-файл и, я думаю, предоставить ссылку на клиента - вы можете использовать расширение файла CSV или XLS. Или, если вы передаете результирующий файл клиенту, он предложит им открыть или сохранить его на диск.

Перехваты (в последний раз я их пробовал) отлично подходит для небольших наборов данных, но не масштабировался хорошо - ужасно медленно для больших наборов данных.

1

Если вы можете отображать свои данные в элементе управления GridView, он по своей сути поддерживает «щелчок правой кнопкой мыши -> Экспорт в Excel» без необходимости писать какой-либо код.

Смежные вопросы