Russian Qt Forum
Ноябрь 23, 2024, 00:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Удаление листа в Excel с помощью QAxObject  (Прочитано 3136 раз)
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« : Октябрь 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());
Результат тот же
Записан
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« Ответ #1 : Октябрь 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)"
Записан
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« Ответ #2 : Октябрь 09, 2019, 14:02 »

Понял, в чем дело было. Надо было написать строку
Код:
excel->setProperty("DisplayAlerts","0");
перед
Код:
sheet1->querySubObject("Delete()");
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.072 секунд. Запросов: 23.