Russian Qt Forum

Qt => ActiveX => Тема начата: YvenTitan от Октябрь 09, 2019, 09:40



Название: Удаление листа в Excel с помощью QAxObject
Отправлено: YvenTitan от Октябрь 09, 2019, 09:40
Здравствуйте, вопрос, возможно, простой.
Как удалить лист Excel-документа с помощью класса QAxObject?

Пробую делать так:
Код:
QAxObject *workbooks = excel->querySubObject("Workbooks");
QAxObject *workbook1 = workbooks->querySubObject("Open(const QString&)","D:\\1.xlsx");
QAxObject *sheets1 = workbook1->querySubObject("Worksheets");
QAxObject *sheet1 = sheets1->querySubObject("Item(const QVariant&)","4");
sheet1->dynamicCall("Delete()");
workbook1->dynamicCall("Save()");
workbook1->dynamicCall("Close()");

По идее должен удалиться лист с именем "4", но этого не происходит. Ошибки тоже не пишет. При этом документ открывается.

Пробовал вместо третьей снизу строки использовать:
Код:
sheets1->dynamicCall("Delete",sheet1->asVariant());
Результат тот же


Название: Re: Удаление листа в Excel с помощью QAxObject
Отправлено: YvenTitan от Октябрь 09, 2019, 11:34
Пробовал как написано тут http://www.forum.crossplatform.ru/index.php?showtopic=2450&view=findpost&p=20337
Т.е.
Код:
if(sheet1)
        sheet1->querySubObject("Delete()");
Выдает ошибку: "QAxBase::querySubObject: Delete(): Method or property is not of interface type in  (unknown)"


Название: Re: Удаление листа в Excel с помощью QAxObject
Отправлено: YvenTitan от Октябрь 09, 2019, 14:02
Понял, в чем дело было. Надо было написать строку
Код:
excel->setProperty("DisplayAlerts","0");
перед
Код:
sheet1->querySubObject("Delete()");