Название: Word ActiveX
Отправлено: CJ1 от Июнь 17, 2012, 17:59
Скажите, где берутся команды ворда для работы в activex?
Название: Re: Word ActiveX
Отправлено: Bepec от Июнь 17, 2012, 20:25
В msdn искать не пробовали?
Название: Re: Word ActiveX
Отправлено: CJ1 от Июнь 18, 2012, 07:28
Пробовал, как обычно не нашел! Мне нружна работа с таблицами, считывания ячеек
Название: Re: Word ActiveX
Отправлено: CJ1 от Июнь 18, 2012, 08:00
Короче я нашел кучу свойств. Точнее я просто сделал generateDocument и вобщем там многое, и все работает, но как обращатся к таблици нету!!!!!!!!!!!!!!!
Название: Re: Word ActiveX
Отправлено: CJ1 от Июнь 18, 2012, 08:54
Вот такое написал QAxWidget * word_app = new QAxWidget("Word.Application", this); if (!word_app) return ;
word_app->setProperty("Visible", true); // Делаю его невидимым word_app->setProperty("DisplayAlerts", "0"); // Это мне надо, отключает гуеву ругань на различного рода ошибки, чтоб процесс выполнения программы на ошибках и предупреждениях не прерывался
QAxObject * word_file = word_app->querySubObject("Documents"); if (!word_file) QMessageBox::information(0,"","Documents не взялся");
word_file->querySubObject("Open(const QString&)", s);
QAxObject * word_selection = word_app->querySubObject("Selection"); if (!word_selection) QMessageBox::information(0,"","word_selection не взялся");
QAxObject * Tables = word_selection->querySubObject("Tables(1)"); if (!Tables) QMessageBox::information(0,"","Tables не взялся");
Tables->querySubObject("Selection()");
QAxObject * Range=Tables->querySubObject("Range()"); if (!Range) QMessageBox::information(0,"","Range не взялся");
QAxObject* Cell = Tables->querySubObject("Cell(Row, Column)", 1,1);
QAxObject* CellRange = Cell->querySubObject("Range()"); QMessageBox::about(0,"",Cell->property("Value").toString());
word_app->dynamicCall("Close (Boolean)", FALSE); word_app->dynamicCall("Quit()");
Ошибок не дает, но и значения не возвращает!
Название: Re: Word ActiveX
Отправлено: CJ1 от Июнь 18, 2012, 09:59
Теперь нашел как брать значения QAxWidget * word_app = new QAxWidget("Word.Application", this); if (!word_app) return ;
word_app->setProperty("Visible", true); // Делаю его невидимым word_app->setProperty("DisplayAlerts", "0"); // Это мне надо, отключает гуеву ругань на различного рода ошибки, чтоб процесс выполнения программы на ошибках и предупреждениях не прерывался
QAxObject * word_file = word_app->querySubObject("Documents"); if (!word_file) QMessageBox::information(0,"","Documents не взялся");
word_file->querySubObject("Open(const QString&)", s);
QAxObject * word_selection = word_app->querySubObject("Selection"); if (!word_selection) QMessageBox::information(0,"","word_selection не взялся");
QAxObject * Tables = word_selection->querySubObject("Tables(1)"); if (!Tables) QMessageBox::information(0,"","Tables не взялся");
Tables->querySubObject("Selection()");
QMessageBox::about(0,"",Tables->property("Rows").toString());
QAxObject * Range=Tables->querySubObject("Range()"); if (!Range) QMessageBox::information(0,"","Range не взялся");
QAxObject* Cell = Tables->querySubObject("Cell(Row, Column)", 1,1);
QAxObject* CellRange = Cell->querySubObject("Range()"); QMessageBox::about(0,"",CellRange->property("Text").toString());
word_app->dynamicCall("Close (Boolean)", FALSE); word_app->dynamicCall("Quit()");
// delete word_app; // delete word_file; Но не нашел как получать количество строк и столбцов
Название: Re: Word ActiveX
Отправлено: CJ1 от Июнь 18, 2012, 14:13
Все разобрался Вот код если кому-то нужен QAxWidget * word_app = new QAxWidget("Word.Application", this); if (!word_app) return ;
word_app->setProperty("Visible", false); // Делаю его невидимым word_app->setProperty("DisplayAlerts", "0"); // Это мне надо, отключает гуеву ругань на различного рода ошибки, чтоб процесс выполнения программы на ошибках и предупреждениях не прерывался
//Беру документ QAxObject * word_file = word_app->querySubObject("Documents"); if (!word_file){ QMessageBox::information(0,"","Documents не взялся"); return; } // Открываю файл word_file->querySubObject("Open(const QString&)", s);
// Выбераю его QAxObject * word_selection = word_app->querySubObject("Selection"); if (!word_selection){ QMessageBox::information(0,"","word_selection не взялся"); return; } // Беру первую таблицу QAxObject * Tables = word_selection->querySubObject("Tables(1)"); if (!Tables){ QMessageBox::information(0,"","Tables не взялся"); return; } // Dsltkz. tt Tables->querySubObject("Selection()");
// QMessageBox::about(0,"",Tables->querySubObject("Range")->querySubObject("Rows")->property("Count").toString()+" - "+Tables->querySubObject("Range")->querySubObject("Columns")->property("Count").toString() );
int intCols = Tables->querySubObject("Range")->querySubObject("Columns")->property("Count").toInt(); //Получаю columns int intRows = Tables->querySubObject("Range")->querySubObject("Rows")->property("Count").toInt(); //Получаю rows
// Доступ к ячейкам Cell = Tables->querySubObject("Cell(Row, Column)", i,2); CellRange = Cell->querySubObject("Range()"); CellRange->property("Text").toString();
Название: Re: Word ActiveX
Отправлено: CJ1 от Июнь 18, 2012, 14:15
Модераторы, перенесите темку в ActivX
|