Название: 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
|