Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.235.226.14] |
|
Сообщ.
#1
,
|
|
|
перешёл с 2007-го на XE2... Уже кучу проблем поборол и давно радуюсь новому XE2...
Но тут всплыли траблы с работой в Excel. Был создан небольшой класс работающий через OLE с Excel... Отказывается работать! Вот кусок кода для примера: Variant var_Excel,var_Book,var_Sheet,var_Cell; var_Excel=Variant::CreateObject("Excel.Application"); var_Excel.OlePropertySet("Visible",true); var_Book=var_Excel.OlePropertyGet("Workbooks").OlePropertyGet("Add"); var_Sheet = var_Book.OlePropertyGet("Worksheets",1); var_Sheet.OleProcedure("Activate"); var_Cell = var_Sheet.OlePropertyGet("Range","A1");//НА ЭТОЙ СТРОЧКЕ ОШИБКА var_Cell.OlePropertySet("Value","Hello world"); var_Book.OleProcedure("Save"); var_Excel.OleProcedure("Quit"); при попытке выполнить var_Sheet.OlePropertyGet("Range","A1"); в настройках проекта стоит "_TCHAR maps to : char" пробую так: var_Sheet.OlePropertyGet("Range",(wchar_t)"A1"); вообще вылетает OLE error 800A03EC... |
Сообщ.
#2
,
|
|
|
Пробуйте:
var_Cell = var_Sheet.OlePropertyGet(L"Range",L"A1"); // или var_Cell = var_Sheet.OlePropertyGet(L"Range",WideString(L"A1")); Ещё можно через "Cells" var_Cells = var_Sheet.OlePropertyGet(L"Cells"); var_Cell = var_Cells.OlePropertyGet(L"Item", _Col_, _Row_); |
Сообщ.
#3
,
|
|
|
Спасибо, к этому времени я уже освоил TApplicationExcel. Оказалась ОЧЕНЬ удобная штука.
Выпадающие списки методов весьма кстати - учитывая то что нет обширной документации по работе с Ole. |
Сообщ.
#4
,
|
|
|
Ясно. У меня XE и в нём нет TApplicationExcel... Хотя помнится, что в более старых версиях он был. Похоже возродили... Или вы установили пакет отдельно?
|
Сообщ.
#5
,
|
|
|
Цитата artsb @ У меня XE и в нём нет TApplicationExcel... Хотя помнится, что в более старых версиях он был. Похоже возродили... Или вы установили пакет отдельно? Его не убрали и не возрождали - просто по умолчанию отключили. В Project->Options->Packages включил птичку "C++ Builder Office 2000 Servers Package" Но даже после апдейта хелпа эта птичка опять была выключена. Embarcadero как-бы намекает - пользоваться им не надо |
Сообщ.
#6
,
|
|
|
Ах вот оно в чём дело Действительно есть такой пакет. Значит, я так "хотел" использовать эти компоненты, что аж прямо поленился их поискать
Спасибо. |
Сообщ.
#7
,
|
|
|
Подскажите где найти TApplicationExcel. Галку включил.
У меня на var_Excel.OleProcedure("Quit"); выбрасывает с Break (First chance exception at $75ABD36F. Exception class $40000015 with message 'system exception (code 0x40000015) at 0x75abd36f'. Process SM.exe (4416) ) |
Сообщ.
#8
,
|
|
|
Цитата vepdl @ Подскажите где найти TApplicationExcel. Галку включил. После включения галки появляется раздел Office2K. Там и есть TApplicationExcel. |
Сообщ.
#9
,
|
|
|
Подскажите, где взять документацию для ExcelApplication (желательно с примерами).
|
Сообщ.
#10
,
|
|
|
Цитата vepdl @ Подскажите, где взять документацию для ExcelApplication (желательно с примерами). у Borland-a, а теперь Embarcadero нет описания этих компонентов Могу дать свой класс работы с Excel, сделанный на основе TApplicationExcel. Правда там методов там кот наплакал, самое основное что мне надо было. Дописывать буду мере необходимости. |
Сообщ.
#11
,
|
|
|
Если можно. Спасибо. (vepdl собака mail.ru)
|
Сообщ.
#12
,
|
|
|
лечение "EOleSysError Неверный тип переменной":
привести указатель к типу OleVariant void TFExcel::toExcelCell(int Row,int Column, AnsiString data) { try { Sh.OlePropertyGet("Cells", Row,Column).OlePropertySet("Value", (OleVariant)data.c_str()); } catch(...) { ; } } |