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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: PrintOut в Excel.  (Прочитано 3618 раз)
ksergey85
Гость
« : Ноябрь 18, 2014, 15:53 »

Здравствуйте. Вопрос вроде бы простой, но добиться правды никак не могу.
Есть созданное Excel-приложение, в нем открыт документ, в документе может быть несколько листов, каждый лист может содержать любое количество данных. Как с помощью метода printOut() напечатать весь документ (то есть все листы документа), не вычисляя и не передавая в вызове количество страниц. В документации на метод PrintOut() говорится, что параметр To, задающий номер последней страницы для печати, является необязательным, и в случае его отсутствия напечатаны будут все страницы. Как выполнить такой вызов и возможно ли сделать то, что мне нужно?
Записан
ksergey85
Гость
« Ответ #1 : Ноябрь 18, 2014, 16:47 »

Всё, разобрался. Значения необязательных параметров нужно передавать в вызов dynamicCall() в виде невалидных вариантов QVariant(). Есть только одна тонкость - нельзя пользоваться методом dynamicCall() принимающим параметры по одному через запятую, т.к. если метод встречает невалидный вариант, он считает, что предыдущий параметр был последним и список параметров будет неполным. Нужно пользоваться методом dynamicCall(), принимающим аргументы в виде списка. Вот как то так:

Код:
QVariantList printParameters = QVariantList() << QVariant(1) << QVariant() << QVariant(1) << QVariant(false) << QVariant(printerName) << QVariant(false) << QVariant(false);
bool printSuccessed = document->dynamicCall("PrintOut(From:=const QVariant&, To:=const QVariant&, Copies:=const QVariant&, Preview:=const QVariant&, ActivePrinter:=const QVariant&, PrintToFile:=const QVariant&, Collate:=const QVariant&)", printParameters).toBool();
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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