2012-06-26 3 views
1

Я знаю, что эта тема обсуждалась, но я думаю, что она имеет некоторые отличия. У меня есть список объектов, которые я хочу скопировать в Excel. Мне также нужно форматировать внешний вид электронной таблицы, если это возможно, из Excel. Я сказал, что это какая-то библиотека Excel Automation или так, что позволяет вам создавать электронную таблицу из кода. Таким образом, я должен был бы создать этот документ, а затем открыть его. Есть идеи по этому поводу? Благодаря!Экспорт и форматирование данных в Excel с C#

+0

Где мой список предметов? – dtsg

+0

Есть ли формат xmlx? Если после этого попробуйте [Microsoft Office Open XML SDK] (http://msdn.microsoft.com/en-us/library/bb448854.aspx) –

+0

Мои объекты извлекаются из базы данных с помощью NHibernate. Любой формат XMÑ кажется подходящим для меня отдельно от слишком простых csv. –

ответ

0

Вы можете экспортировать данные в Excel с C#, можете ли вы дайте нам больше информации об объектах, из которых вы хотите выполнить экспорт, если, например, вам нужно создать и открыть документ Excel из списка, вот как вы это сделаете:

Сначала вам нужно добавить Microsoft. Office.Interop.Excel в качестве ссылки на проект и добавьте следующую сборку в ваш код: с помощью Excel = Microsoft.Office.Interop.Excel;

//This would convert the listview1 content to Excel document and create the file in the given path   
    private void CreateExcelFromListview() 
    { 
     ListViewExport.ListViewToCsv(listView1, "C:\\test.csv", true); 
     OpenInExcel("C:\\test.csv"); 
    } 

    //This would open the document on screen 
    public void OpenInExcel(string strFileName) 
    { 
     try 
     { 
      new Excel.Application {Visible = true}.Workbooks.Open(strFileName); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
+0

Объекты из обычного списка, поэтому моя идея заключалась в копировании всех свойств в foreach или что-то подобное. Я не хочу использовать не встроенные библиотеки. –

4

Если вы создаете типичный документ Excel, который не использует расширенные функции Excel, библиотека, подобная NPOI http://npoi.codeplex.com/, или по адресу http://code.google.com/p/npoi/, хорошо отображена. Или другой, называемый ExcelLibrary. Я лично использовал библиотеку NPOI с большой легкостью. Известны сложности/проблемы с серверной автоматизации офиса: http://support.microsoft.com/kb/257757. NPOI подходит для создания файлов xls (pre 2007 Excel). Если вы счастливы сбивать файлы xslx (post 2007 Excel), используйте OpenXML. Он может поддерживать почти все функции, которые могут вам понадобиться, в вашем документе xslx.

+0

А как насчет Microsoft.Office.Interop.Excel? Это более или менее то же самое? –

+1

@DavidFornas: Это правда. Вы можете использовать Microsoft.Office.Interop.Excel - в зависимости от сценария и насколько хорошо вы можете перемещаться по темным водам COM. Вы пропустите одну вещь, и вы закончите с несколькими процессами Excel, работающими в фоновом режиме, из-за того, что они не делят все ссылки на COM-объекты. Но есть гоча. Вы получите неожиданные результаты, если развертываете свое решение на компьютере, на котором не установлен Excel. –

+0

@DavidFornas: Также обратитесь к этой ссылке: http://stackoverflow.com/questions/158706/how-to-properly-clean-up -excel-interop-objects-in-c-sharp –

0

В случае, если у вас нет радости с OpenXML или других библиотек не предлагал до сих пор, вы могли бы заботиться, чтобы посмотреть на Aspose.Cells. Я использовал его для хорошего эффекта в двух разных проектах без проблем (у него были некоторые особенности форматирования цвета, но их можно было обработать).

Он позволяет читать и создавать файлы Excel (во всех версиях), объявлять формулы в ячейках и кучу больше и не требует Excel на конечной рабочей станции.

Однако, это может быть излишним для ваших заявленных потребностей - это не дешево, начиная с $ 999, и быстро становится дороже, чем шире вы хотите развить и развернуть.

+0

Действительно, он переборщил. Это небольшая особенность большего приложения, поэтому я думаю, что смогу хорошо работать без других решений. –

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