Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cells в QT при работе с MS Office
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
Страницы: 1, 2
Rocky
Ясно.

Цитата(breeve @ 20.2.2011, 13:13) *
QStringList list[cols];
.........
for(int j = 1; j < cols+1; j++) {
.........
if(str.isEmpty()) list[j].append("Empty");
else list[j].append(str);

Имхо криминал тут. Понятно почему? (нужно быть внимательнее с индексами)
AlexeyDonald
Народ подскажите, цель поменять имя листа в документе, не пойму в чем ошибка. Вот проблема, я экспортирую дату в excel, открываю документ, все нормально работает до определенного момента, код ниже:
    QAxObject* excel = new QAxObject( "Excel.Application" );
    excel->dynamicCall( "SetVisible(bool)", TRUE );
    QAxObject *workbooks = excel->querySubObject( "Workbooks()" );

    QAxObject* workbook = workbooks->querySubObject( "Add()" );
    QAxObject* Sheets = workbook->querySubObject( "Sheets" );
    QAxObject* Sheet;
    Sheets->querySubObject("Add");
    Sheets->querySubObject("Add");
    Sheets->querySubObject("Add");

    Sheet =Sheets->querySubObject( "Item(int)" ,1);
    Sheet->dynamicCall( "Select()" );
    Sheet->setProperty("Name","name1");
    ExportToPage1(Sheet,model_1);

После этого названия листа меняется нормально.
Но дальше отказывается менять имя листа.
    Sheet =Sheets->querySubObject( "Item(int)" ,2); 
    Sheet->dynamicCall( "Select()" );
    Sheet->dynamicCall("Name","name2");
    ExportToPage2(Sheet,model_2);

    Sheet =Sheets->querySubObject( "Item(int)" ,3);
    Sheet->dynamicCall( "Select()" );
    Sheet->setProperty("Name(QString)","name3");
    ExportToPage2(Sheet,model_3);

    Sheet = Sheets->querySubObject( "Item(int)" ,4);
    Sheet->dynamicCall( "Select()" );
    Sheet->setProperty("SetName(QString)","name4");
    ExportToPage2(Sheet,model_4);

пишет:

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
Уже который день мучаюсь, не получается, подскажите пожалуйста, где не прав?
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
Цитата(pavelqt @ 7.9.2011, 11:33) *
И второе, как ловить и читать данные исключения?
Цитата(pavelqt @ 7.9.2011, 11:33) *
Connect to the exception(int,QString,QString,QString) signal to catch this exception
Alisher
Подскажите пожалуйста, как в цикле вывести все значения ячеек дипазона
QAxObject* range = StatSheet->querySubObject("Range(const QVariant&)",QVariant(QString("B9:B29")) );
такого например.
Можно это сделать без использования контейнеров?
Данил
Мне кажется, что тему нужно назвать работа с Excel, а не работа с MS Office. Там, кроме Excel ничего не затронуто.
Maclaren
Цитата(Данил @ 20.12.2011, 13:45) *
Мне кажется, что тему нужно назвать работа с Excel, а не работа с MS Office. Там, кроме Excel ничего не затронуто.

Подскажите как добавить строку в таблицу в word ??
romeodka
Я открыл документ word, изменил нужные мне данные. как теперь сохранить его в другой файл?

doc->querySubObject("SaveAs (const QString&)", initialName+"/pko1.docx");
и
doc->dynamicCall("SaveAs (const QString&)", initialName+"/pko1.docx");
не работает
gp
Что-то никак не могу извлечь значение ячейки... Выводит пустую строку, вместо необходимой информации. Уж умаялся искать, где загвоздка. Подскажите, пожалуйста.

Вот мой исходный код:
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <ActiveQt/qaxobject.h>
#include <ActiveQt/qaxbase.h>

#include <QMessageBox>
#include <QDebug>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // получаем указатель на Excel
    mExcel = new QAxObject( "Excel.Application",this);
    mExcel->dynamicCall( "SetVisible(bool)", TRUE );
    // на книги
    workbooks = mExcel->querySubObject( "Workbooks" );
    // на директорию, откуда грузить книгу
    workbook = workbooks->querySubObject(
                "Open(const QString&)", "D:\\Guest\\collection.xls" );
    // на листы (снизу вкладки)
    mSheets = workbook->querySubObject( "Sheets" );
    // указываем, какой лист выбрать.
    sheet = mSheets->querySubObject( "Item(int)" ,2); //( "Item(const QVariant&)", QVariant("Common") );
    //gp
    sheet->dynamicCall( "Select" );

    qDebug()<<sheet->property("Name").toString();
}

MainWindow::~MainWindow()
{
    delete ui;

    delete sheet;
    delete mSheets;
    workbook->dynamicCall("Close()");
    delete workbook;
    delete workbooks;
    mExcel->dynamicCall("Quit()");
    delete mExcel;
}


QString MainWindow::getCellValue(int row, int col)
{
    // получение указателя на ячейку [row][col] ((!)нумерация с единицы)
    QAxObject* cell = sheet->querySubObject("Cells(const QVariant&,const QVariant&)",
                                            QVariant(row), QVariant(col));
    // получение содержимого
    QVariant result = cell->property("Value()");
    qDebug()<<"row=="<<row<<" col=="<<col<<" result=="<<result.toString();
    // освобождение памяти
    delete cell;

    return result.toString();
}

void MainWindow::on_pushButton_clicked()
{
    QMessageBox::information(this,"Считанное значение",
                             getCellValue(ui->spinBoxRow->value(), ui->spinBoxCol->value()));
}
avanGARd
Цитата(gp @ 9.11.2013, 15:23) *
Что-то никак не могу извлечь значение ячейки... Выводит пустую строку, вместо необходимой информации. Уж умаялся искать, где загвоздка. Подскажите, пожалуйста.


Это я под гостём писал. Выяснил случайно, что дело было в версии Qt. Собирал поначалу под 4.7.1, а вот здесь написано, что и под 4.7.0 при попытке считать или записать значения в ячейку таблицы Excel ничего не получается.
Я сразу же попробовал собрать под Qt 4.7.4, как было рекомендовано на том форуме. И всё сразу же заработало. Так вот ведь, в чём загвоздка была!!! Почти пол-дня потратил на выяснение причины, наткнулся на решение чисто случайно :)
avanGARd
Кто шарит в теме. Есть вопросик. Как осуществить средствами ActiveQt поиск в заданном столбце таблицы Excel ячейки с требуемым текстом?
Я имею в виду нахождение адреса ячейки с требуемым текстом.
Olga
Добрый день!
Подскажите пожалуйста в чём может быть проблема:

QAxObject* excel = new QAxObject( "Excel.Application", this );
excel->dynamicCall( "SetVisible(bool)", TRUE );
QAxObject *workbooks = excel->querySubObject( "Workbooks" );
QAxObject *workbook = workbooks->querySubObject( "Open(const QString&)", "E:\\OLGA\\table.xls");
QAxObject *sheets = workbook->querySubObject( "Sheets" );
QAxObject *statsheet=sheets->querySubObject("Item (const QVariant&)",QVariant("Лист1"));
statsheet->dynamicCall("Select");
QAxObject *range=statsheet->querySubObject("Range(const QVariant&)",QVariant(QString("A4:A4")));
range->dynamicCall("Clear");
range->dynamicCall("SetValue(const QVariant&)",QVariant("6"));


до строки statsheet->dynamicCall("Select") все работает нормально, а потом Excel выдает ошибку стандартную ошибку работы Office Microsoft

и в Qt в консоли приложения выводится ошибка E:\OLGA\Jobs\spr_windows\qw-build-desktop\debug\qw.exe завершился с кодом -1073741819
Litkevich Yuriy
ну для начала проверь этот указатель на нуль, может querySubObject() не удалось получить объект, который ты запрашиваешь и он вернул нулевой указатель.
Olga
QAxObject *statsheet=sheets->querySubObject("Item (const QVariant&)",QVariant("Лист1"));
Вот тут он почему-то не выбирает нужный лист(((, а почему не знаю
Olga
Разобралась, всё подключается и работает. Но теперь вопрос, почему если прописывать полный путь к экселевскому файлу, то он нормально запускается.
А если добавить его в файл ресурсов, то он не открывается?
Litkevich Yuriy
Цитата(Olga @ 6.2.2014, 12:29) *
А если добавить его в файл ресурсов, то он не открывается?
а как ты себе представляешь открытие экселем файла, который находится в коде программы?
Гость
Добрый день.

У меня Excel закрывается вместе с программой. Как сделать, чтобы при закрытии программы Excel оставался открытым?
JohnCS
Цитата(Гость @ 13.8.2014, 9:56) *
Добрый день.

У меня Excel закрывается вместе с программой. Как сделать, чтобы при закрытии программы Excel оставался открытым?


Разобрался.
Такое происходит только если открыть пустой Excel (без книг), при добавлении книги Excel остается открытым.
Vincent_vega
Друзья, подскажите пожалуйста
возникает ошибка
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);
}
Гость
с помощью active qt работаю с excel.
имеется массив вида
int mas[5]
строю в excel график, есть указатель
series на seriescollection(ну,как обычно)
теперь надо вызвать values и передать
массив,чтоб он появился на графике.
пожалуйста выручите!
получилось только передать одно
значение
series->setproperty("values",42)
lanz
Передавайте QVariantList со всеми нужными числами.
ViGOur
Разделил тему, сообщения перенес в новою тему: Сохранение файла Excel
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.