Russian Qt Forum

Qt => ActiveX => Тема начата: diadia_sid от Февраль 09, 2017, 19:14



Название: ActiveQt + Excel. Перенос Chart на другой лист
Отправлено: diadia_sid от Февраль 09, 2017, 19:14
Доброго времени суток.

Пишу программу для переноса данных из текстового файла в Excel. Возникла проблема с графиками. При создании нового графика создается новый лист. Как перенести график на основной лист с данными?

Код:

Код:
range = worksheet->querySubObject("Range(const QVariant&)", QVariant("A2:C200"));
range->dynamicCall("Select()");
//Создаем объект Charts (коллекция областей диаграмм)
QAxObject * charts = workbook->querySubObject("Charts");
//Добавляем новую область диаграмм
QAxObject * chart = charts->querySubObject("Add()");
//Устанавливаем имя области диаграмм
chart->dynamicCall("Name", "Name");
//Устанавливаем тип области диаграмм
chart->dynamicCall("ChartType", QVariant("xlLine"));
//Получаем доступ к текущему ряду области диаграмм
QAxObject * series = chart->querySubObject("SeriesCollection(const QVariant&)", QVariant(1));
//Устанавливаем имя ряда
series->dynamicCall("Name", "Name1");
//Получаем объект Range для оси X в виде QVariant
QVariant source = worksheet->dynamicCall("Range(const QVariant&)", QVariant("D2:D200"));
//Устанавливаем диапазон значаний X для ряда
series->dynamicCall( "XValues", source );
//Получаем объект Range для оси Y в виде QVariant
source = worksheet->dynamicCall("Range(const QVariant&)", QVariant("A2:A200"));
//Устанавливаем диапазон значаний Y для ряда
series->dynamicCall("Values", source);
series = chart->querySubObject("SeriesCollection(const QVariant&)", QVariant(2));
series->dynamicCall("Name", "Name2");
source = worksheet->dynamicCall("Range(const QVariant&)", QVariant("D2:D200"));
series->dynamicCall("XValues", source);
source = worksheet->dynamicCall( "Range(const QVariant&)", QVariant("B2:B200"));
series->dynamicCall("Values", source);
series = chart->querySubObject("SeriesCollection(const QVariant&)", QVariant(3));
series->dynamicCall("Name", "Name3");
source = worksheet->dynamicCall("Range(const QVariant&)", QVariant("D2:D200"));
series->dynamicCall("XValues", source);
source = worksheet->dynamicCall("Range(const QVariant&)", QVariant("C2:C200"));
series->dynamicCall("Values", source);


Название: Re: ActiveQt + Excel. Перенос Chart на другой лист
Отправлено: panAlexey от Февраль 09, 2017, 22:11
С такими вопросами я обычно иду на форум по vba.


Название: Re: ActiveQt + Excel. Перенос Chart на другой лист
Отправлено: diadia_sid от Февраль 24, 2017, 17:25
Ответили на другом форуме.


Название: Re: ActiveQt + Excel. Перенос Chart на другой лист
Отправлено: gil9red от Февраль 25, 2017, 23:55
Ответили на другом форуме.

Можете ссылку на тему форума или решение оттуда сюда привести?  :)


Название: Re: ActiveQt + Excel. Перенос Chart на другой лист
Отправлено: __Heaven__ от Февраль 26, 2017, 12:43
Пишу программу для переноса данных из текстового файла в Excel.
А зачем вам qt? ИМХО, это делается проще в xlsm формате.
ЗЫ: Я не работал в связке qt->vba, но работал с vba excel. Вызов select() зачастую лишнее действие, которого нужно избегать, имхо. Оно зачастую заменяется более быстрыми методами, например selection -> range