Russian Qt Forum

Qt => ActiveX => Тема начата: maks от Март 25, 2009, 19:24



Название: Обьединение ячеек в Excel
Отправлено: maks от Март 25, 2009, 19:24
Добрый день. Надо объединиеть несколько ячее в Excel известны цифровые координаты первой ячейки и последней Например (5,5) (10,10)
 пробовал вот так
Код:
ExcelCell=ExcelCells->querySubObject("Range(Cells(int,int),Cells(int,int))",5,5,10,10);
ExcelCell->dynamicCall("Merge");

Но код выдает стреляется. Так как первая строка возвращает NULL.
Как правильно обьединить ячейки?


Название: Re: Обьединение ячеек в Excel
Отправлено: pastor от Март 25, 2009, 19:37
Ваш вопрос относится к Qt?


Название: Re: Обьединение ячеек в Excel
Отправлено: maks от Март 25, 2009, 20:51
Доступ к Excel осуществляется через ActiveQT.


Название: Re: Обьединение ячеек в Excel
Отправлено: silart от Март 26, 2009, 14:02
Доступ к Excel осуществляется через ActiveQT.

Думаю сначала нужно попробовать все сделать на Visual Basic, а когда будет там работать, перенести в Qt.


Название: Re: Обьединение ячеек в Excel
Отправлено: maks от Март 26, 2009, 16:01
Вот код на VBA
Код:
Range(Cells(1, 1), Cells(10, 10)).Select
Selection.Merge
Как его переделать на C++ и ActiveQT?


Название: Re: Обьединение ячеек в Excel
Отправлено: silart от Март 27, 2009, 04:23
Вот код на VBA
Код:
Range(Cells(1, 1), Cells(10, 10)).Select
Selection.Merge
Как его переделать на C++ и ActiveQT?

Сначала нужно сгенерировать документацию для Qt по библиотеке типа. Для этого есть утилита dumpcpp.exe и функция QAxBase::generateDocumentation(), которую эта утилита вызывает.
Я пользуюсь функцией. Она возвращает строку с документацией html, которую потом сохраняешь в файл.
Причем эту функцию нужно вызывать для каждого COM-объекта с которым работаешь. В документации будет написан пример использования для каждой функции из библиотеки типа. Ну например что-то вроде:
Код:
object.dynamicCall("Range(IDispatch*, IDispatch*)", P1, P2);

Потом подставляешь свои параметры и все должно работать.


Название: Re: Обьединение ячеек в Excel
Отправлено: kolob от Август 26, 2010, 11:03
Код:
// получаю указатель
QAxObject *rangec = StatSheet->querySubObject( "Range(const QVariant&)",QVariant(QString("D2:D5")));
// выбираю их
rangec->dynamicCall("Select()");
// устанавливаю свойство объединения.
rangec->dynamicCall("MergeCells",TRUE);

Вот суда http://www.forum.crossplatform.ru/index.php?showtopic=2450 (http://www.forum.crossplatform.ru/index.php?showtopic=2450) зайди.