Как добавить лист в конец книги в Excel с помощью ActiveQt?

Я заинтересован в копировании листа в конец рабочей книги с помощью ActiveQtЯ посмотрел на метод Copy() в сгенерированной документации QAxObject "Рабочий лист", который написан так:

void Copy(QVariant Before = 0, QVariant After = 0);

очевидно, что невозможно передать значение параметру After, не передавая что-либо параметру Before.

Я изо всех сил пытался найти способ сделать это, но никакой подсказки не было найдено

Я взглянул на C# и VBA, но они оба используют "отсутствующую" константу, которую я не смог найти в ActiveQt.

в настоящее время я добавляю (или копирую) перед временным листом, который я удаляю в конце.

Нелогично иметь такие методы Move, Add и Copy, для которых требуются параметры До и После, без решения использовать только После

так какие-нибудь предложения, как добавить лист в конец рабочей книги? или как использовать необязательные параметры в ActiveQt?

Заранее спасибо!

2 ответа

Решение

QVariant имеет построенное по умолчанию нулевое значение. Это то, что вы должны использовать для "отсутствующих" параметров, предполагая, что данный метод принимает отсутствующий параметр.

Например:

Copy({}, after); // C++11
Copy(QVariant(), after); //C++98

Я только что нашел решение, проблема была в том, как я передал параметры:

sheet->dynamicCall("Copy(QVariant, QVariant)", QVariant(), sheet->asVariant());

но после прочтения документации метода Copy по гиперссылке я обнаружил, что неправильно прочитал документацию, я должен был передать ее следующим образом:

sheet->dynamicCall("Copy(QVariant, QVariant)", QVariantList {QVariant(), sheet->asVariant()});
Другие вопросы по тегам