Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > написание экселевского приложения


Автор: wotker 25.8.2006, 11:55
Здравствуйте. Не знаете ли готовых библиотек-оберток для работы с excel. работать с обычной библиотекой затруднительно, т.к. она достаточно громоздкая.  Буду рад примерам кода работы с excel. 
Собственно я хочу написать программу, которая 1) отображает таблицы также как в экселе, 2) позволяет редактировать определенные клетки с помощью ввода формул или значений и 3) скрывает формулы инициализаированных ячеек (ячейки, которым было присвоено значение до открытия документа).  Благодарен буду и просто совету, т.к. программу нужно решить в конкретные сроки. 
Кстати какие премущества для работы с Excel дает .net 2.0 (классы там новые и т.д.)?
Спасибо!
 

Автор: mr.DUDA 25.8.2006, 15:33
С экселем работают через COM-враппер, так что всё зависит исключительно от версии экселя. Версия дотнет тут роли не играет.

Автор: wotker 25.8.2006, 16:16
Верно то что если я скопирую бублиотеку с excelem в папку с проектом, то этот проект запустится на др. компьютере?

основная проблема над которой я думаю - это скрытие формул отдельных ячеек.

Я сначала думаю создать объект эеселевского приложения
Код

private Excel.Application excelApp = null;



в этом объекте уже становлены обработчики событий при нажатии на какую-то ячейку -> надо добавить новый который будет выполняться вконце и убирать всю "гадость" которую сделали предыдущие (т.е. будет обнулять строку формул). 

если ли др. предложения? 

.

Автор: mr.DUDA 25.8.2006, 18:22
Цитата(wotker @  25.8.2006,  16:16 Найти цитируемый пост)
Верно то что если я скопирую бублиотеку с excelem в папку с проектом, то этот проект запустится на др. компьютере?

Если версия не совпадает, то есть вероятность что часть функций работать не будут (где поменялся набор аргументов, имя и т.п.). В такой ситуации самый лучший выход - это вынести чисто экселевский функционал в отдельную библиотечку, и создать несколько версий этой библиотеки для разных версий Interop.Excel.dll, и таскать все версии с приложением. Тогда при старте приложения можно будет взять из реестра тек. установленную версию экселя и подгрузить библиотечку именно для этой версии (я так и делал в одном приложении, правда для Word - поддерживались все версии начиная с 2000).

Автор: wotker 25.8.2006, 20:04
Цитата

при старте приложения можно будет взять из реестра тек. установленную версию экселя


ммм... Не разу не работал с реестром - какой ключ надо посмотреть, каков его адресс?

Автор: mr.DUDA 26.8.2006, 14:47
Цитата(wotker @  25.8.2006,  20:04 Найти цитируемый пост)
ммм... Не разу не работал с реестром - какой ключ надо посмотреть, каков его адресс?

HKEY_CURRENT_USER\Software\Microsoft\Office

внутри - разделы, смотрим на те которые содержат номер версии (11.0 - 2003й офис, и т.д.)

Автор: wotker 30.8.2006, 17:15
ват сейчас продолжаю писать программу... возникла проблема.

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

Вопросы такие: 

могут ли быть связаны в экселе  ячейки из разных страниц?
какое свойство у ячейки отвечает за данные? я пробовал писать
Код

((Range)curSheet.Cells[i+1, j]).Formula = obj;

и 
Код

 ((Range)curSheet.Cells[i + 1, j]).Value2 = obj;

после радактирования я вызывал метод Calculate() объекта Application - и ничего не получилась - все данные почему то остаются теми же.
Кто что может предложить?




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)