суббота, 31 октября 2009 г.

работа с excel в c#

прежде всего excel должен быть уже установлен. Далее в References вашего проекта(в окне Solution explorer) необходимо добавить Microsoft.Office.Interop.Excel. Теперь будут доступны классы, необходиммые нам для работы с excel. Далее не необходимая часть. Иногда бывают конфликты с настройками самой ОС. У меня, как я понял, была проблема с локализацией. С трудом, потратив много времени на гугл, я обнаружил таки решение. Перед использованием excel необходимо написать код:

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

Далее можно переходить к работе с самим Excel'ем. Прежде всего создаем экземпляр класса ApplicationClass

ApplicationClass excel = new ApplicationClass()

Чтобы работать далее нужно иметь представление о объектной модели excel'я. Она наклядно изображенна на рисунке:

Объектная модель excel
Excel состоит из книг(workbooks), которые в свою очередь состоит из страниц или листов (Worksheets или Sheets). Для изменения ячеек необходимо сначала их выделить. Область ячеек - это range. Приведу небольшой пример кода, изменяющего значение в ячейке:

excel = new ApplicationClass(); Worksheet worksheet = (Worksheet) excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet).Sheets[1]; excel.Visible = true; ((Range)worksheet.Cells[1, 1]).Value2 = "Наиненование";

Счет в exce'е начинается не с привычного 0, а с единицы. Далее, порой не просто интуитивно угадать какое свойство нужно изменить для получения нужного эффекта. Здесь есть один удобный способ - макросы. Используются они так: открываем excel, переходим на вкладку view, нажимаем на стрелку под macros и жмем Record macros, говорим с появившимся диалоговым окном. Теперь например изменяем фон ячейки. Теперь снова view->macros, но теперь жмем stop record. Далее macros->view macros, выбираем только что записанный макрос и жмем edit. Перед нами возник VBA ко макроса

With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With

Теперь нужно сделать тоже самое в c#.

((Range)worksheet.Cells[rowIndex, 1]).interior.Pattern = xlSolid и т.д.

Чтобы увидеть свои труды нужно установить свойство visible экземпляра класса ApplicationClass в true. После окончания работы с ApplicationClass нужно вызвать метод Quit(), который закончить процесс EXCEL.EXE, иначе после завршения работы вашего приложения EXCEL.EXE все равно будет висеть в процессах.

Комментариев нет:

Отправить комментарий