Как добавить лист в конец книги в 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()});