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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: ActiveQt + Excel. Перенос Chart на другой лист  (Прочитано 5732 раз)
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);
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #1 : Февраль 09, 2017, 22:11 »

С такими вопросами я обычно иду на форум по vba.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
diadia_sid
Гость
« Ответ #2 : Февраль 24, 2017, 17:25 »

Ответили на другом форуме.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Февраль 25, 2017, 23:55 »

Ответили на другом форуме.

Можете ссылку на тему форума или решение оттуда сюда привести?  Улыбающийся
Записан

__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #4 : Февраль 26, 2017, 12:43 »

Пишу программу для переноса данных из текстового файла в Excel.
А зачем вам qt? ИМХО, это делается проще в xlsm формате.
ЗЫ: Я не работал в связке qt->vba, но работал с vba excel. Вызов select() зачастую лишнее действие, которого нужно избегать, имхо. Оно зачастую заменяется более быстрыми методами, например selection -> range
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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