![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
abra |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 68 Регистрация: 12.1.2009 Пользователь №: 485 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
Привет.
Здесь столкнулся с такой заботой. QAxObject *range = StatSheet->querySubObject( "Range(const QVariant&)",QVariant(QString("A1:B6"))); (выделяем диапозон для работы) QAxObject *range = StatSheet->querySubObject( "Range(const QVariant&)",QVariant(QString("A1"))) (выделяем 1 ячейку) QAxObject *range = StatSheet->querySubObject( "Cells(const QVariant&)",QVariant(QString("1"))) ( выделяем 1 ячейку(аналог Cells(1,1)) QAxObject *range = StatSheet->querySubObject( "Cells(const QVariant&)",QVariant(QString("2"))) (выделяем вторую ячейку (аналог Cells(1,2)) Но у меня есть таблица БД.В ней поля.СЛедовательно,должна соблюдаться структура при выводе данных в Эксель 1 поле 2 поле 3 поле 4 поле 5 поле Но!Как мне обратиться скажем к Cells(2,2)...или Cells(3,4)...Причем это обязательно нужно сделать через цифры (Cells(X,Y) (X,Y- целочисленные указатели на ячейки)) Потому что через A1 нельзя вызывать(в таком случае будет слишком мудрено вызываться ячейка B1) ________________________________________________________________________________ ____________________________________________ Хм...Ребят,подождите...Сейчас одна идейка возникла...Может написать QAxObject *range = StatSheet->querySubObject( "Cells(const QVariant&,const QVariant&)",QVariant(QString("2")),QVariant(QString("1"))) попробовать......... ________________________________________________________________________________ ______________________________________________ Не помогло........ QAxObject *range = StatSheet->querySubObject( "Cells(const QVariant&;const QVariant&)",QVariant(QString("4")),QVariant(QString("8"))); Пишет значение в ячейку D1(принял первый параметр равный 4) ![]() Он почему то принимает только первый параметр,и всё......... Какие будут предложения? Сообщение отредактировал abra - 24.3.2009, 19:46 |
|
|
abra |
![]()
Сообщение
#2
|
Студент ![]() Группа: Участник Сообщений: 68 Регистрация: 12.1.2009 Пользователь №: 485 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
Проблема решена)))
Может кому понадобится QAxObject *range = StatSheet->querySubObject( "Cells(const QVariant&,const QVariant&)",QVariant(4),QVariant(8 )); Вместо 4 и 8 можно использовать например i и j ,как входные параметры. |
|
|
Rocky |
![]()
Сообщение
#3
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
abra, а можно вопросик? А как вообще начинать работу с офисом? Не подскажешь, может ссылки какие-нить, можно на английском. Сейчас сам вплотную подошел к этому: надо выгружать данные в Excel или word (не особо важно вочто). А чистый COM не хочется использовать....
|
|
|
ViGOur |
![]()
Сообщение
#4
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
abra, если не лень, то может и правда опишешь?
А то эта тема очень плохо освещена. ![]() Заодно и в вику выложим, как и что там. |
|
|
abra |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 68 Регистрация: 12.1.2009 Пользователь №: 485 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
Оу.Извините))))
Чот как то решил для себя проблему,описал вам её,так и не заходил больше. Я вот сейчас вплотную занимаюсь работой с MS Office под QT на высоком уровне.Вот сейчас сам ищу статьи,но в инете их нет,поэтому писать самому приходится. Для начала советую почитать вам вот это http://hardclub.donntu.edu.ua/projects/qt/...s/qt-excel.html Чтобы подключить библиотеку,вам необходимо в .pro файле (в каталоге с вашим проектом),дописать LIBS += -lqaxcontainer Ну теперь собственно приступаем к кодингу.
Здесь идёт работа с макросами MS Office. Скопировать данные из 1 ячейки в другую:
Работа со шрифтами.Дополнение:
Редактирование высоты,ширины строк или столбцов(вместо Rows указываем Columns,вместо RowHeight указываем ColumnWidth )
Объединение ячеек:
Вот еще сейчас покодил.Разрешает перенос:
Вот еще накодил)))) Устанавливает положение текста.
Я здесь напишу основные. Выравнивание по левому краю: -4131 Выравнивание по центру: -4108 Выравнивание по правому краю: -4152 Это для вертикального выравнивания:
Выравнивание по верхнему краю: -4160 Выравнивание по центру: -4108 Выравнивание по нижнему краю: -4107 Вот еще написал=))) Удаление\добавление строк
Удаление\добавление столбцов
Обещаная работа с границами ячеек =)))
Ну вот собственно на этом я наверно и завершу написание статьи по работе библиотеки QT c MS Office Excel. Далее задавайте вопросы,будем уже на конкретных примерах разбираться. ![]() Сообщение отредактировал Litkevich Yuriy - 5.2.2014, 16:40 |
|
|
abra |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 68 Регистрация: 12.1.2009 Пользователь №: 485 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
Статью я постоянно редактирую(дополняю),по мере того,как кодю=)))
P.S Сейчас рассмотрю вопрос с границами ячеек,и на этом наверно закончу.Далее задавайте конкретные вопросы.Статью, я могу отредактировать,и можно на Вику выложить. Сообщение отредактировал abra - 1.4.2009, 19:28 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#7
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
супер!
|
|
|
abra |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 68 Регистрация: 12.1.2009 Пользователь №: 485 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
![]() Сообщение отредактировал abra - 1.4.2009, 19:47 |
|
|
ViGOur |
![]()
Сообщение
#9
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
abra, бросил твою статью в Faq нашей вики: Работе с MS Office с помощью ActiveQt
Если что, то можешь зайти в нее сам и поправить - добавить. Имя пользователя и пароль в вики тот же, что ты входишь в форум. |
|
|
abra |
![]()
Сообщение
#10
|
Студент ![]() Группа: Участник Сообщений: 68 Регистрация: 12.1.2009 Пользователь №: 485 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
Хорошо.Только у меня просьба.Подправь пожалуйста заголовок.
А то там написано - РаботЕ,вместо РаботА ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#11
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
abra, ты можешь сделать это сам.
В верху страницы есть вкладки, щёлкни "Переименовать" и введи новое имя статьи. только желателно залогинится в вики |
|
|
ViGOur |
![]()
Сообщение
#12
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Поправил...
|
|
|
abra |
![]()
Сообщение
#13
|
Студент ![]() Группа: Участник Сообщений: 68 Регистрация: 12.1.2009 Пользователь №: 485 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#14
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
abra |
![]()
Сообщение
#15
|
Студент ![]() Группа: Участник Сообщений: 68 Регистрация: 12.1.2009 Пользователь №: 485 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
Дополнение к статье:
Значения Выравнивание по верхнему краю: -4160 Выравнивание по центру: -4108 (xlCenter) Выравнивание по нижнему краю: -4107 и для остальных,которые содержат xl(указатель на Excel приложение), Вы можете взять из help`a в MS Office Excel |
|
|
Гость_Наставник_* |
![]()
Сообщение
#16
|
Гости ![]() |
|
|
|
igor_bogomolov |
![]()
Сообщение
#17
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
Это все хорошо, но только надо заметить, что все это будет работать только в коммерческой версии QT Эт почему? Исходники activeqt входят в opensource версию, начиная с 4.5.0Вот здесь (ссылка) ребята писали как этот модуль собрать. |
|
|
Гость_Гость_abra_* |
![]()
Сообщение
#18
|
Гости ![]() |
Вот и ответ получен=))))
|
|
|
Tonal |
![]()
Сообщение
#19
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Включение исходников ещё не значит что они халявные:
Цитата The ActiveQt modules are part of the Qt Full Framework Edition. They are not part of the Open Source Versions of Qt. Из документации |
|
|
Rocky |
![]()
Сообщение
#20
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Всем привет!
Начал потихоньку разбираться с activeqt... Хочу чутка дополнить пример со шрифтами: Цитата QAxObject *pFont = pCell->querySubObject("Font"); //получаем шрифт в выбранной ячейке //... и курсивнымpFont->setProperty("Size", 15); //задаем размер шрифта pFont->setProperty("Bold", bBold); //делаем его полужирным ... pFont->setProperty("Italic", bItalic); ...Далее задавайте конкретные вопросы... Возникла пара вопросов: 1. Как вставить картинку в ячейку? 2. Как создать новый workbook и в нем sheet с заданным именем? 3. Как изменить формат представления данных в ячейке? (например, я ввожу число "5.2" - а отображается "5 февраля") 4. Как изменить параметры страницы? (например, сделать лист альбомной ориентации, чтобы после вывода данных в excel пользователю в случае печати не нужно было ничего настраивать). Если кто что знает, отпишитесь плиз )) Спасибо! |
|
|
ViGOur |
![]()
Сообщение
#21
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
4. Как изменить параметры страницы? (например, сделать лист альбомной ориентации, чтобы после вывода данных в excel пользователю в случае печати не нужно было ничего настраивать). На VBA это будет так: следовательно, делаем примерно так: код не проверял, но думаю должен работать. ![]() Если работает, то можно будет данный код добавить в вики, как и твой. p.s. будет время приведу пример, как сделать остальные пункты. ![]() |
|
|
Rocky |
![]()
Сообщение
#22
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Хе-хе )) работает ))
|
|
|
Rocky |
![]()
Сообщение
#23
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Вспомнил что когда-то давно что-то писал на VBA. Вобщем, общая идея работы с ActiveQT - эта библиотека позволяет работать с любыми библиотеками/приложениями, поддерживающими COM. Список методов и свойств объектов можно посмотреть в tlb-хе соответствующего приложения (например, через OLEView). Если етсь *.tlh или idl-ник - можно и там напрямую через текстовые редакторы. В случае с Excel идеально помогает VBA. Запускаем Excel, жмем Alt+F11, пишем процедуру открытия книги например и там эксперементируем. По "F2" можно посмотреть список классов их методов и свойств. Выбираем метод - давим "F1", читаем как им пользоваться. Далее читаем документацию по функциям ActiveQt - querySubObject/dynamicCall/setProperty/property.
1. Как вставить картинку в ячейку? На VBA будет так:
Пробовал переписать так:
не фурычит. pShape2 == NULL и картинка не грузица. В querySubObject если нужно вызывать функцию, нужно описать сигнатуру этой функции.. А сигнатура такая:
Я много как пробовал: не хотит пока. Че писать пока не понял (особенно насчет MsoTriState).... 2. Как создать новый workbook и в нем sheet с заданным именем? Создаем новую книгу (при этом совершенно необязательно что-то там открывать с диска)
Удалить листы можно так:
Новый лист создать можно так:
3. Как изменить формат представления данных в ячейке? (например, я ввожу число "5.2" - а отображается "5 февраля") На VBA так:
На ActiveQT чет не особо работает. Поэтому решил проблему так:
4. Как изменить параметры страницы? (например, сделать лист альбомной ориентации, чтобы после вывода данных в excel пользователю в случае печати не нужно было ничего настраивать). Вот так можно задать границы области печати (и задать ориентацию (собсно ка ViGOur писал выше)):
Сообщение отредактировал Rocky - 2.6.2009, 22:54 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#24
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
croc |
![]()
Сообщение
#25
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 15.7.2009 Пользователь №: 911 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
А как получать массив значений определенного range?
Иногда ячейке назначено свойство контроля вводимых значений, иногда бывает полезно получить список допустимых значений, искомый обьект называется Validation и является членом класса Range, обратиться к нему можно так: Не удивительно что там окажется ссылка именнованного массива "Name" (=имя_именнованного_массива) член класса WorkBook или WorkSheet, по этому вот пример обращния к нему:
|
|
|
ViGOur |
![]()
Сообщение
#26
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Добавил в вики.
croc, в случае чего, каждый участник форума может залогинится в вики, под тем же именем пользователя и паролем, что и на форуме. |
|
|
Гость_admsasha_* |
![]()
Сообщение
#27
|
Гости ![]() |
А как в открытом документе сделать "поиск и замена"
открыл, например test.doc, а дальше ?
|
|
|
arial |
![]() ![]()
Сообщение
#28
|
![]() Студент ![]() Группа: Участник Сообщений: 39 Регистрация: 27.9.2009 Пользователь №: 1121 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
Вот еще накодил)))) Устанавливает положение текста. ... Я здесь напишу основные. Выравнивание по левому краю: -4131 Выравнивание по центру: -4108 Выравнивание по правому краю: -4152 Это для вертикального выравнивания: ... Выравнивание по верхнему краю: -4160 Выравнивание по центру: -4108 Выравнивание по нижнему краю: -4107 Полный список констант можно найти здесь. Конкретно по выравниванию: Цитата xlHAlignCenter -4108 xlHAlignCenterAcrossSelection 7 xlHAlignDistributed -4117 xlHAlignFill 5 xlHAlignGeneral 1 xlHAlignJustify -4130 xlHAlignLeft -4131 xlHAlignRight -4152 xlVAlignBottom -4107 xlVAlignCenter -4108 xlVAlignDistributed -4117 xlVAlignJustify -4130 xlVAlignTop -4160 |
|
|
admsasha |
![]()
Сообщение
#29
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 5.10.2009 Пользователь №: 1140 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Открытие и печать документа
|
|
|
ViGOur |
![]()
Сообщение
#30
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Добавил в вики
|
|
|
Professor |
![]()
Сообщение
#31
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 16.4.2008 Пользователь №: 151 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Получение количества таблиц(sheet):
Получение количества использованных строк/столбцов:
Причина редактирования: пользуйся форматированием кода (code)
|
|
|
Chesterfilda |
![]()
Сообщение
#32
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 29.10.2009 Пользователь №: 1187 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Доброго время суток!!!Очень полезная тема...
А не подскажете,как вот такой код на VBA:
можно переписать на Qt |
|
|
Professor |
![]()
Сообщение
#33
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 16.4.2008 Пользователь №: 151 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Chesterfilda попробуйте добраться до объекта QueryTable и выполнить generateDocumantation().
Новые находки - доступ к символам внутри ячейки:
|
|
|
Chesterfilda |
![]()
Сообщение
#34
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 29.10.2009 Пользователь №: 1187 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Чуть-чуть разобралась...
Только вот небольшая проблемка... Есть такая функция:
,которая как раз-таки и создает QueryTable... только не получается задать второй параметр этой функции,который указывает ячейку с которой начинается вставка данных. В этом случае должна помочь
Точнее никак не получается написть это на QT
|
|
|
Chesterfilda |
![]()
Сообщение
#35
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 29.10.2009 Пользователь №: 1187 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Нашла где-то на сайте:
Цитата Если методу нужно передать аргумент типа IDispatch * или IUnknown *, то можно сначала инкапсулировать его в объект QAxObject, а затем вызвать метод asVariant(), чтобы преобразовать его в тип QVariant Но это не помогает :-(...Если пишу:
то выдает след ошибку: QAxBase: Error calling IDispatch member Add: Exception thrown by server Как же обратится к этой ячейке?? |
|
|
Professor |
![]()
Сообщение
#36
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 16.4.2008 Пользователь №: 151 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Chesterfilda а может вместо:
QAxObject *range=statSheet->querySubObject("Range(QVariant &)",QVariant(QString("A4"))); попробовать: QAxObject *range=statSheet->querySubObject("Range(QVariant &)",QVariant(QString("A4:C8"))); Я не проверят но может сработает. |
|
|
dim_san |
![]()
Сообщение
#37
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 13.11.2009 Пользователь №: 1228 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Создаю документ ворда таким образом:
QAxWidget *activeX = new QAxWidget( ); activeX->setControl( "Word.Document" ); ui->verticalLayout->insertWidget(0, activeX ); при этом размещаю его в лайауте. Показывается документ как и надо (встроенный в мой виджет). Можно ли каким-то образом достать вордовский тулбар и разместить его куда надо мне, например на основной тулбар моего приложения? Или придется делать собственный? |
|
|
arial |
![]()
Сообщение
#38
|
![]() Студент ![]() Группа: Участник Сообщений: 39 Регистрация: 27.9.2009 Пользователь №: 1121 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
dim_san |
![]()
Сообщение
#39
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 13.11.2009 Пользователь №: 1228 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
arial, неа.
Такое впечатление, что он пытается сам появиться, панелька пустая появляется и тут же исчезает. Но теоретически это должно быть можно сделать, т.к. видел работающий пример на mfc вроде... Кстати, меню вордовское формируется прямо в главном qt-шном окне, но оно не действует... |
|
|
Rosster |
![]()
Сообщение
#40
|
Студент ![]() Группа: Участник Сообщений: 33 Регистрация: 23.11.2009 Пользователь №: 1254 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Всем привет. А откуда вы берете все эти команды?
Open(const QString&) Item(const QVariant&) QAxObject *rangep = StatSheet->querySubObject( "Cells(const QVariant&,const QVariant&)",QVariant(3),QVariant(1)); rangec->dynamicCall("Copy()"); и так далее? и еще: получаем указатель на листы: QAxObject *mSheets = workbook->querySubObject( "Sheets" ); а как узнать какие листы вообще в документе есть? Ибо возможности узнать название листа и вписать в прогу нету возможности (много разных документов имеются) Спасибо |
|
|
ViGOur |
![]()
Сообщение
#41
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
В microsoft Excel и Word есть замечательная вешь как макросы, с помощью них и можно это все делать.
А ActiveQt дает механизм работы с ними, а следовательно и манипулирования данными документами. Смотришь как работает макрос, ставишь запись макроса и делаешь руками необходимые тебе действия, смотришь, что там записалось и затем переводишь в Qt. В принципе ничего сложно нет, если разобраться как работаю макросы. ![]() Сообщение отредактировал ViGOur - 23.11.2009, 21:52 |
|
|
Rosster |
![]()
Сообщение
#42
|
Студент ![]() Группа: Участник Сообщений: 33 Регистрация: 23.11.2009 Пользователь №: 1254 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
В microsoft Excel и Word есть замечательная вешь как макросы, с помощью них и можно это все делать. А ActiveQt дает механизм работы с ними, а следовательно и манипулирования данными документами. Смотришь как работает макрос, ставишь запись макроса и делаешь руками необходимые тебе действия, смотришь, что там записалось и затем переводишь в Qt. В принципе ничего сложно нет, если разобраться как работаю макросы. ну вот я и не понял как получить список листов, уже все перепробовал с этими макросами, все время пишется типа "Лист 1", "Лист 2", но сами названия то я не могу знать,мне как-то названия и надо получить в QT ![]() |
|
|
ViGOur |
![]()
Сообщение
#43
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Узнать количество листов в книге можно в цикле по коллекции Workbook.Sheets. Количество листов — свойство Sheets.Count. Имя листа — свойство Worksheet.Name. Попробуй руководствуясь данной цитатой набросать макрос в Excel, а потом перевести в Qt. Была бы у меня винда сам набросал бы, но чего нет того нет. ![]() |
|
|
Гость_Гость_dim_san_*_* |
![]()
Сообщение
#44
|
Гости ![]() |
Всем привет. А откуда вы берете все эти команды? по командам можно документацию сгенерировать: http://www.doc.crossplatform.ru/qt/4.3.2/q...teDocumentation |
|
|
MJIbIu |
![]()
Сообщение
#45
|
Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: ![]() ![]() ![]() |
все бы ок тока вот у меня в системе висит процесс Excel.ехе и файл который я прочел пишет доступен тока для чтения и так с любой копией моего файла |
|
|
MJIbIu |
![]()
Сообщение
#46
|
Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
breeve |
![]()
Сообщение
#47
|
Участник ![]() ![]() Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
Может кто подсказать, а если у меня в документе Word есть таблица(правда там есть еще пару строк текста до и после нее), тока как с ней работать. Мне бы, хотя бы узнать как получить данные из 1-ой ячейки этой таблицы.
|
|
|
breeve |
![]()
Сообщение
#48
|
Участник ![]() ![]() Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
Разобрался как доставать текст из таблицы. Но только из 1 элемента, пытаюсь вытащить из всей таблицы. У меня в таблице 3 колонки первые две он считывает должным образом. А вот переходя к 3-ей, он сразу же выдает ошибку.
code1
Вот вывод:
Еще появляеться MsgBox следующего содержания: Microsoft Visual C++ Runtime Library This application has requested th Runtime to terminate it in an unusual way. Please contact the application's support team for more information. У меня в таблице 3 колонки первые две он считывает должным образом. А вот переходя к 3-ей, он сразу же выдает ошибку. Суть даже в том что если я делаю не в цикле а просто вытаскиваю определенный элемент из 3-го столбца то все в порядке. code2
Не могу понять в чем ошибка. И какой такой параметр передается в функцию не правильно. |
|
|
Rocky |
![]()
Сообщение
#49
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
А если попробовать так:
? |
|
|
breeve |
![]()
Сообщение
#50
|
Участник ![]() ![]() Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Rocky |
![]()
Сообщение
#51
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Ясно.
QStringList list[cols]; ......... for(int j = 1; j < cols+1; j++) { ......... if(str.isEmpty()) list[j].append("Empty"); else list[j].append(str); Имхо криминал тут. Понятно почему? (нужно быть внимательнее с индексами) Сообщение отредактировал Rocky - 20.2.2011, 20:48 |
|
|
AlexeyDonald |
![]()
Сообщение
#52
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 22.2.2011 Пользователь №: 2428 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Народ подскажите, цель поменять имя листа в документе, не пойму в чем ошибка. Вот проблема, я экспортирую дату в excel, открываю документ, все нормально работает до определенного момента, код ниже:
После этого названия листа меняется нормально. Но дальше отказывается менять имя листа.
пишет: QAxBase: Error calling IDispatch member Name: Exception thrown by server Code : 1004 Source : Microsoft Excel Description: ??????? ???????????? ??? ??? ????? ??? ?????????. ?????????, ???: ? ????? ?????????? ????? ?? ????????? 31 ?????; ? ??? ?? ???????? ?? ?????? ?? ????????? ??????: : \ / ? * [ ??? ]; ? ??? ?? ????????? ??????. Help : xlmain11.chm Connect to the exception(int,QString,QString,QString) signal to catch this exception Кто нибудь знает в чем дело? Спасибо!!! |
|
|
pavelqt |
![]()
Сообщение
#53
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 7.9.2011 Пользователь №: 2851 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Уже который день мучаюсь, не получается, подскажите пожалуйста, где не прав?
Qt + MS Outlook -> заводим новый контакт QAxObject *contactItems = myFolder->querySubObject( "Items" ); // удалять контакты без проблем! // contactItems->dynamicCall("remove(int )", 1 ); //А вот добавить не хочет никак ![]() // contactItems->querySubObject( "CreateItem(olContactItem)", "olContactItem" ); // QAxObject *item = contactItems->querySubObject( "Add(const QVariant&)", QVariant("0099881") ); И второе, как ловить и читать данные исключения? QAxBase: Error calling IDispatch member Add: Exception thrown by server Code : 4096 Source : Microsoft Office Outlook Description: ?????? ?? ??????. Help : Connect to the exception(int,QString,QString,QString) signal to catch this exception |
|
|
Litkevich Yuriy |
![]()
Сообщение
#54
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Гость_Alisher_* |
![]()
Сообщение
#55
|
Гости ![]() |
Подскажите пожалуйста, как в цикле вывести все значения ячеек дипазона
QAxObject* range = StatSheet->querySubObject("Range(const QVariant&)",QVariant(QString("B9:B29")) ); такого например. Можно это сделать без использования контейнеров? |
|
|
Гость_Данил_* |
![]() ![]()
Сообщение
#56
|
Гости ![]() |
Мне кажется, что тему нужно назвать работа с Excel, а не работа с MS Office. Там, кроме Excel ничего не затронуто.
|
|
|
Гость_Maclaren_* |
![]()
Сообщение
#57
|
Гости ![]() |
|
|
|
romeodka |
![]()
Сообщение
#58
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 15.5.2012 Пользователь №: 3381 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Я открыл документ word, изменил нужные мне данные. как теперь сохранить его в другой файл?
doc->querySubObject("SaveAs (const QString&)", initialName+"/pko1.docx"); и doc->dynamicCall("SaveAs (const QString&)", initialName+"/pko1.docx"); не работает |
|
|
Гость_gp_* |
![]() ![]()
Сообщение
#59
|
Гости ![]() |
Что-то никак не могу извлечь значение ячейки... Выводит пустую строку, вместо необходимой информации. Уж умаялся искать, где загвоздка. Подскажите, пожалуйста.
Вот мой исходный код:
|
|
|
avanGARd |
![]() ![]()
Сообщение
#60
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 9.11.2013 Пользователь №: 3969 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Что-то никак не могу извлечь значение ячейки... Выводит пустую строку, вместо необходимой информации. Уж умаялся искать, где загвоздка. Подскажите, пожалуйста. Это я под гостём писал. Выяснил случайно, что дело было в версии Qt. Собирал поначалу под 4.7.1, а вот здесь написано, что и под 4.7.0 при попытке считать или записать значения в ячейку таблицы Excel ничего не получается. Я сразу же попробовал собрать под Qt 4.7.4, как было рекомендовано на том форуме. И всё сразу же заработало. Так вот ведь, в чём загвоздка была!!! Почти пол-дня потратил на выяснение причины, наткнулся на решение чисто случайно ![]() |
|
|
avanGARd |
![]()
Сообщение
#61
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 9.11.2013 Пользователь №: 3969 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Кто шарит в теме. Есть вопросик. Как осуществить средствами ActiveQt поиск в заданном столбце таблицы Excel ячейки с требуемым текстом?
Я имею в виду нахождение адреса ячейки с требуемым текстом. |
|
|
Olga |
![]()
Сообщение
#62
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 5.2.2014 Пользователь №: 4048 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день!
Подскажите пожалуйста в чём может быть проблема:
до строки statsheet->dynamicCall("Select") все работает нормально, а потом Excel выдает ошибку стандартную ошибку работы Office Microsoft и в Qt в консоли приложения выводится ошибка E:\OLGA\Jobs\spr_windows\qw-build-desktop\debug\qw.exe завершился с кодом -1073741819
Причина редактирования: используй тэг code
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#63
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
ну для начала проверь этот указатель на нуль, может querySubObject() не удалось получить объект, который ты запрашиваешь и он вернул нулевой указатель.
|
|
|
Olga |
![]()
Сообщение
#64
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 5.2.2014 Пользователь №: 4048 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
QAxObject *statsheet=sheets->querySubObject("Item (const QVariant&)",QVariant("Лист1"));
Вот тут он почему-то не выбирает нужный лист(((, а почему не знаю |
|
|
Olga |
![]()
Сообщение
#65
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 5.2.2014 Пользователь №: 4048 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Разобралась, всё подключается и работает. Но теперь вопрос, почему если прописывать полный путь к экселевскому файлу, то он нормально запускается.
А если добавить его в файл ресурсов, то он не открывается? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#66
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Гость_Гость_* |
![]()
Сообщение
#67
|
Гости ![]() |
Добрый день.
У меня Excel закрывается вместе с программой. Как сделать, чтобы при закрытии программы Excel оставался открытым? |
|
|
Гость_JohnCS_* |
![]()
Сообщение
#68
|
Гости ![]() |
|
|
|
Гость_Vincent_vega_* |
![]()
Сообщение
#69
|
Гости ![]() |
Друзья, подскажите пожалуйста
возникает ошибка servertcp.obj:-1: ошибка: LNK2019: unresolved external symbol "public: __thiscall QAxObject::QAxObject(class QString const &,class QObject *)" (??0QAxObject@@QAE@ABVQString@@PAVQObject@@@Z) referenced in function "private: void __thiscall ServerTCP::on_pushButton_XLSX_clicked(void)" (?on_pushButton_XLSX_clicked@ServerTCP@@AAEXXZ) в .pro прописал QT += axcontainer LIBS += -lqaxcontainer код #include <ActiveQt/qaxobject.h> #include <ActiveQt/qaxbase.h> void ServerTCP::on_pushButton_XLSX_clicked() { // получаем указатель на Excel QAxObject *mExcel = new QAxObject( "Excel.Application",this); } |
|
|
Гость_Гость_* |
![]()
Сообщение
#70
|
Гости ![]() |
с помощью active qt работаю с excel.
имеется массив вида int mas[5] строю в excel график, есть указатель series на seriescollection(ну,как обычно) теперь надо вызвать values и передать массив,чтоб он появился на графике. пожалуйста выручите! получилось только передать одно значение series->setproperty("values",42) |
|
|
lanz |
![]()
Сообщение
#71
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Передавайте QVariantList со всеми нужными числами.
|
|
|
ViGOur |
![]()
Сообщение
#72
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Разделил тему, сообщения перенес в новою тему: Сохранение файла Excel
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 16.4.2025, 23:35 |