Редактирование уже существующего .xls файла
От: PbICb  
Дата: 26.10.10 20:52
Оценка:
Что имеем:
— файл .xls, который ведется пару лет вручную. Необходимо автоматизировать действия. Т.е. спрашиваем у пользователя пару вещей, открываем excel (в фоновом режиме), добавляем 1 строчку (при этом важно, чтобы никакое форматирование не сбилось) и всё.
Прочитал море факов. Везде пишет про КОМ сервер. Но фака с объяснением каждой строчки так и не нашёл. Писать планирую в VS (C++). Но можно и в билдере на C++. Или на совсем крайний случай в VS на C#. Заранее спасибо за любую помощь!
Re: Редактирование уже существующего .xls файла
От: Vi2 Удмуртия http://www.adem.ru
Дата: 27.10.10 04:20
Оценка: 1 (1) +1
Здравствуйте, PbICb, Вы писали:

PIC>Что имеем: — файл .xls, который ведется пару лет вручную. Необходимо автоматизировать действия. Т.е. спрашиваем у пользователя пару вещей, открываем excel (в фоновом режиме), добавляем 1 строчку (при этом важно, чтобы никакое форматирование не сбилось) и всё.

PIC>Прочитал море факов. Везде пишет про КОМ сервер. Но фака с объяснением каждой строчки так и не нашёл. Писать планирую в VS (C++). Но можно и в билдере на C++. Или на совсем крайний случай в VS на C#. Заранее спасибо за любую помощь!

Самый простой способ: открываешь excel, в меню находишь "Запись макроса", выполняешь необходимые действия со строчками (мышка работать не будет) и закрываешь "Запись макроса". Потом открываешь ВизуалБейсик или находишь в меню "Редактирование макроса" и попадаешь в тело написанного кода. Причёсываешь — всё же генерится машиной! — и переводишь на свой любимый язык.

Что касается С++. Есть директива #import. Для excel она есть где-то тут на форуме: Результаты поиска. Посмотри, как люди пишут и используют её. Если будут непонятки, то вэлкам обратно.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: Редактирование уже существующего .xls файла
От: PbICb  
Дата: 27.10.10 19:22
Оценка:
Ну я вот нашел фак,более-не-менее всё понятно. Но не работает:
http://www.rsdn.ru/article/dotnet/ExcelNELateBinding.xml
Автор(ы): Гасанов Ровшан Закариевич
Дата: 17.11.2005
Статья рассказывает о динамическом взаимодействии с Excel посредством OLE Automation и рефлексии.
Требуется знание С#.


Запустил эксель в фоне (видно в процессах), закрыть его тоже могу. А вот открыть какой-либо файл нет. Даже если тупо делаю копипаст из фака.
Re[3]: Редактирование уже существующего .xls файла
От: Vi2 Удмуртия http://www.adem.ru
Дата: 28.10.10 04:08
Оценка:
Здравствуйте, PbICb, Вы писали:

PIC>Ну я вот нашел фак,более-не-менее всё понятно. Но не работает:

PIC>http://www.rsdn.ru/article/dotnet/ExcelNELateBinding.xml
Автор(ы): Гасанов Ровшан Закариевич
Дата: 17.11.2005
Статья рассказывает о динамическом взаимодействии с Excel посредством OLE Automation и рефлексии.
Требуется знание С#.


PIC>Запустил эксель в фоне (видно в процессах), закрыть его тоже могу. А вот открыть какой-либо файл нет. Даже если тупо делаю копипаст из фака.


  workbookname = "c:\tmp\x.xls"
  Set ExcelApp = CreateObject("Excel.application")
  Set ExcelBook = ExcelApp.Workbooks.Open(workbookname)

Или же

  Set ExcelBook = GetObject(workbookname)
  Set ExcelApp = ExcelBook.Application

Где-то примерно так:
ApplicationPtr ExcelApp("Excel.application");
WorkbooksPtr ExcelBooks = ExcelApp.Workbooks;
WorkbookPtr ExcelBook = ExcelBooks.Open(workbookname);

Или же

WorkbookPtr ExcelBook = ExcelBooks.Open(workbookname);
  CoGetObject(workbookname, __uuidof(ExcelBook), &ExcelBook);
  ExcelApp = ExcelBook.Application;

Или искать по форуму открытие файла по ключевым словам из моего примера.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[4]: Редактирование уже существующего .xls файла
От: PbICb  
Дата: 06.11.10 13:50
Оценка:
Ничего не понял.

string appProgID = "Excel.Application";
Type excelType = Type.GetTypeFromProgID(appProgID);
object excel = Activator.CreateInstance(excelType);

Вот такой вот код открывает Excel в фоновом режиме. Далее надо открыть книгу в нём. Попробывал ваши варианты — все отказывается компилить из-за ошибок. Заранее спасибо за ответ!
Re[5]: Редактирование уже существующего .xls файла
От: PbICb  
Дата: 06.11.10 20:41
Оценка:
В общем я решил перейти в более привычный мне С++ билдер, и буду делать через OLE.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.