2013-08-08 1 views
-3

Я пишу простое приложение, которое имеет функцию экспорта в Excel. Вот мой код..Net 4.0 Проблема экспорта Excel

using Microsoft.Office.Interop.Excel; 
..... 
.... 
... 

Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); 
      app.Visible = true; 
      app.Workbooks.Add(); 

      Microsoft.Office.Interop.Excel._Worksheet worksht = app.ActiveSheet; 

      worksht.Cells[1, "A"] = "Col1"; 
      worksht.Cells[1, "B"] = "Col2; 
      worksht.Cells[1, "C"] = "Col3"; 

      int row = 1; 
      lstUsers= GetUsers(); 

      foreach (Users usr in lstUsers) 
      { 
       row++; 
       worksht.Cells[row, "A"] = usr.Col1; 
       worksht.Cells[row, "B"] = usr.Col2; 
       worksht.Cells[row, "C"] = usr.Col3; 
      } 

      worksht.SaveAs("Test.xls"); 

Этот код отлично работает в моем локальном поле, но не в dev-сервере. В моем локальном ящике есть офис Microsoft Office, у сервера dev нет офиса MS.

Я попытался зарегистрировать файл Microsoft.Office.Interop.Excel.dll в GAC. Но это не сработало. Есть идеи?

Dev Серверное программное обеспечение Детали: Windows 2003/IIS 6/.Net 4,0

+1

Использовать стороннюю библиотеку, такую ​​как NPOI для Excel 2003 или EPPlus для Excel 2007+ – banging

+0

Извините, забыл упомянуть, что сторонняя сторона не является опцией – Yass

+2

Автоматизация сервера на стороне сервера не поддерживается MS. Посмотрите здесь http: /support.microsoft.com/kb/257757 – Karthik

ответ

0

Хорошо, ребята, я нашел альтернативный способ сделать ту же функциональность, которая не требует каких-либо компонентов на стороне сервера. Вот код.

Response.ClearContent(); 
     Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
     Response.AddHeader("Content-Disposition", "attachment;filename=UserList.xls"); 

     DataGrid grid = new DataGrid(); 
     grid.DataSource = <<DataList>>; 
     grid.DataBind(); 

     StringWriter sw = new StringWriter(); 
     HtmlTextWriter htw = new HtmlTextWriter(sw); 
     grid.RenderControl(htw); 
     Response.Write(htw.InnerWriter); 

     Response.End(); 

Он позволяет экспортировать в XLS или XLSX в зависимости от ваших потребностей.

1

Interop is NOT supported in sever-scenarios (like IIS) by MS.

AFAIK нет возможности без какой-либо библиотеки, чтобы достичь того, чего вы хотите в серверном сценарии!

Есть много вариантов, чтобы читать/редактировать/создавать файлы Excel без Interop/установка Excel на сервере:

я прочитал в комментариях, что третьи сторонние библиотеки против политики компании, но я думаю, так как библиотека OpenXML от себя и свободной MS это может быть вариант

MS обеспечивает свободный OpenXML SDK V 2.0 - см http://msdn.microsoft.com/en-us/library/bb448854%28office.14%29.aspx (только XLSX)

Это может читать + запись файлов MS Office (включая Excel).

Другие варианты в этом случае вы получите исключение из политики компании и/или кто-то другой будет искать для решения аналогичной задачи

Еще один бесплатный вариант см http://www.codeproject.com/KB/office/OpenXML.aspx (только XLSX)

Если вам нужно больше походить на обработку старых версий Excel (например, XLS, не только XLSX), рендеринг, создание PDF-файлов, формул и т. Д., Тогда есть разные бесплатные и коммерческие библиотеки, такие как ClosedXML (бесплатно, только XLSX), EPPlus (бесплатно, только XLSX) , Aspose.Cells, SpreadsheetGear, LibXL a d Flexcel и т. д.

+0

Спасибо @Yahia, оцените вашу помощь. – Yass

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

  • Нет связанных вопросов^_^