Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение из Excel в Builder, Не могу прочитать данные из Excel 
:(
    Опции темы
Ozerman
Дата 5.7.2004, 05:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Записываю в Excel файл данные без труда:
Variant ExcelApp;
ExcelApp = CreateOleObject("Excel.Application");
ExcelApp.OlePropertyGet("Workbooks").OlePropertyGet("Add");
ExcelApp.OlePropertyGet("WorkBooks").OleProcedure("Open", "c:\\File.xls");
ExcelApp.OlePropertyGet("Range", "A1:C2").OlePropertySet("Value", "111");
ExcelApp.OlePropertyGet("Workbooks", 1).OlePropertyGet("Save");
ExcelApp.OlePropertyGet("Workbooks").OlePropertyGet("Close");
ExcelApp.Clear();


Но прочитать эти же данные не могу:
Variant ExcelApp;
ExcelApp = CreateOleObject("Excel.Application");
ExcelApp.OlePropertyGet("Workbooks").OlePropertyGet("Add");
ExcelApp.OlePropertyGet("WorkBooks").OleProcedure("Open", "c:\\File.xls");
Variant value;
//пробовал так
ExcelApp.OlePropertyGet("Range", "A1").OlePropertyGet("Cells", 1, 1).OlePropertyGet("Value", value);
//и так
ExcelApp.OlePropertyGet("Range", "A1").OlePropertyGet("Value", value);
//в отладчике value = { ??? }
ExcelApp.OlePropertyGet("Workbooks").OlePropertyGet("Close");
ExcelApp.Clear();

Что делать???
  Вверх
Олег М
Дата 5.7.2004, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Борландовские объекты, к сожалению не видел. Вообще непонятно нахрена ты автоматизацией пользуешся, а не вызываешь оле-бъекты напрямую. Бейсик что-ли?
Цитата
ExcelApp.OlePropertyGet("Range", "A1").OlePropertyGet("Value", value);

Покажи какие типы параметров у OlePropertyGet. ССылка на вариант?

PM MAIL ICQ   Вверх
Ozerman
Дата 5.7.2004, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.7.2004
Где: Владивосток

Репутация: нет
Всего: нет



Объектов я никаких, кроме описанных выше, не использую. Всё, что мне надо, должно работать и без форм. Типы параметров у OlePropertyGet... Пошутил что-ли??? Там куча всякой лажы, о которой однозначно ничего не скажешь. Чтобы работать с этой функцией, нужно знать OLE Excel, чем позвастаться не могу.

Может быть, правда, я тебя вообще не понял, за что прошу извинить. А может быть и мой вопрос не понятен.

В-общем - не шарю в OLE + Excel + Builder, и помощи не знаю где искать.
Если сможешь помочь прочитать кучу данных из Excel таблиц другим способом, буду несоразмерно благодарен!!!
PM MAIL   Вверх
Олег М
Дата 5.7.2004, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата
Объектов я никаких, кроме описанных выше, не использую. Всё, что мне надо, должно работать и без форм. Типы параметров у OlePropertyGet... Пошутил что-ли??? Там куча всякой лажы, о которой однозначно ничего не скажешь. Чтобы работать с этой функцией, нужно знать OLE Excel, чем позвастаться не могу.

Из хёдера вытащи объявления OlePropertyGet, который с вариантом и покажи - у меня просто здесь нифига нет.


Цитата
В-общем - не шарю в OLE + Excel + Builder, и помощи не знаю где искать.
Если сможешь помочь прочитать кучу данных из Excel таблиц другим способом, буду несоразмерно благодарен!!!


Ты сейчас делаешь с помощью автоматизации ОЛЕ, которая разработана специально для языков типа бейсик.
В с++ можно получать указатели на интерфейсы и вызывать методы как у обычных классов. Собственно это и будут обычные классы. Для этого надо импортировать библиотеку типов.
Кроме того всё что делаешь в ручную - делается автоматически - создаются классы, методы и т.д. Вручную этого никто не делает.

Не знаю как это делается в борланде - поищи, я в вижуале не помню - там, то ли pragma import или что-то ещё. Короче в сишный файл подцепляешь dll или tlb и всё
PM MAIL ICQ   Вверх
Ozerman
Дата 6.7.2004, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.7.2004
Где: Владивосток

Репутация: нет
Всего: нет



Variant OlePropertyGet(const String& name, TAutoArgsBase* args = 0);
template <class P1> Variant OlePropertyGet(const String& name, P1 p1);
template <class P1, class P2> Variant OlePropertyGet(const String& name, P1 p1, P2 p2);
template <class P1, class P2, class P3> Variant OlePropertyGet(const String& name, P1 p1, P2 p2, P3 p3);

template <class P1, class P2, class P3, class P4> Variant OlePropertyGet(const String& name, P1 p1, P2 p2, P3 p3, P4 p4);
template <class P1, class P2, class P3, class P4, class P5> Variant OlePropertyGet(const String& name, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5);
template <class P1, class P2, class P3, class P4, class P5, class P6> Variant OlePropertyGet(const String& name, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6);

template <class P1, class P2, class P3, class P4, class P5, class P6, class P7> Variant OlePropertyGet(const String& name, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7);
template <class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8> Variant OlePropertyGet(const String& name, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8);

template <class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9> Variant OlePropertyGet(const String& name, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9);
template <class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10> Variant OlePropertyGet(const String& name, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10);

Нравится??? Вот и мне тожа!

Это сообщение отредактировал(а) Ozerman - 6.7.2004, 16:25
PM MAIL   Вверх
Олег М
Дата 6.7.2004, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



И что непонятного?
Цитата
ExcelApp.OlePropertyGet("Range", "A1").OlePropertyGet("Cells", 1, 1).OlePropertyGet("Value", value);

Здесь скорее всего передаётся не сыылка на вариант, а копия, которая при возврате из функции удаляется.
Сделай
Код
ExcelApp.OlePropertyGet("Range", "A1").OlePropertyGet("Cells", 1, 1).OlePropertyGet("Value", &value)

всё скорее всего заработает
PM MAIL ICQ   Вверх
Олег М
Дата 6.7.2004, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Или, на худой конец, так:
Код
value=ExcelApp.OlePropertyGet("Range", "A1").OlePropertyGet("Cells", 1, 1).OlePropertyGet("Value", value);

Добавлено @ 11:32
Или ваще так
Код
value=ExcelApp.OlePropertyGet("Range", "A1").OlePropertyGet("Cells", 1, 1).OlePropertyGet("Value");

Посмотри в хелпе, в конце концов
PM MAIL ICQ   Вверх
Ozerman
Дата 6.7.2004, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.7.2004
Где: Владивосток

Репутация: нет
Всего: нет



УРА!!! Свершилось!!!

Variant value;

value = ExcelApp.OlePropertyGet("Range", "A1").OlePropertyGet("Cells", 1, 1).OlePropertyGet("Value");//считывает значение из ячейки [1, 1] (1-я строка, 1-ый столбец)

value = ExcelApp.OlePropertyGet("Range", "A2").OlePropertyGet("Cells", 1, 1).OlePropertyGet("Value");//считывает значение из ячейки [2, 1]

value = ExcelApp.OlePropertyGet("Range", "A1").OlePropertyGet("Cells", 1, 2).OlePropertyGet("Value");//считывает значение из ячейки [1, 2]

Спасибо за подсказку!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0717 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.