C++ (Qt)QAxWidget * application_ = new QAxWidget( "Excel.Application");
C++ (Qt) QAxObject* WordApplication=new QAxObject("Word.Application"); // Создаю интерфейс к MSWord WordApplication->setProperty("Visible", false); // Делаю его невидимым QApplication::processEvents(); QAxObject* WordDocuments = WordApplication->querySubObject( "Documents()" ); // Получаю интерфейсы к его подобъекту "коллекция открытых документов": WordDocuments->querySubObject( "Add()" ); // Создаю новый документ QAxObject* ActiveDocument = WordApplication->querySubObject("ActiveDocument()"); // создание таблицы QAxObject* Tables = ActiveDocument->querySubObject("Tables()"); QApplication::processEvents(); int r,c; if (startRow==0) r = table->rowCount(); else r =table->rowCount()-1; if (StartColumn==0) c = table->columnCount(); else c =table->columnCount()-1; QAxObject* NewTable = Tables->querySubObject("Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)", ActiveDocument->dynamicCall("Range()"), r, c, 1, 1); for (int i=startRow; i < table->rowCount(); i++){ for (int j=StartColumn; j < table->columnCount(); j++){ int i1,j1; if (startRow==0) i1 = i+1; else i1 =i; if (StartColumn==0) j1 = j+1; else j1 =j; // запись текста в ячейку QAxObject* Cell = NewTable->querySubObject("Cell(Row, Column)", i1, j1); if( !Cell ) { QMessageBox::information(0,QString::number(i)+" - "+QString::number(j),"cell"); return; } QAxObject* CellRange = Cell->querySubObject("Range()"); QString data = table->item(i,j)->text(); // вставка значения переменной data (любой тип, приводимый к QVariant) в полученную ячейку CellRange->dynamicCall("InsertAfter(Text)", data); // освобождение памяти delete CellRange; delete Cell; } } ActiveDocument->dynamicCall("SaveAs(const QVariant&)",QVariant(exportname.replace("/","\\"))); WordApplication->dynamicCall("Close (Boolean)", FALSE); WordApplication->dynamicCall("Quit()"); delete NewTable; delete Tables; delete ActiveDocument; delete WordDocuments; delete WordApplication;
C++ (Qt) for (int i=startRow; i < table->rowCount(); i++){ for (int j=StartColumn; j < table->columnCount(); j++){ int i1,j1; if (startRow==0) i1 = i+1; else i1 =i; if (StartColumn==0) j1 = j+1; else j1 =j; // запись текста в ячейку QAxObject* Cell = NewTable->querySubObject("Cell(Row, Column)", i1, j1); if( !Cell ) { QMessageBox::information(0,QString::number(i)+" - "+QString::number(j),"cell"); return; } QAxObject* CellRange = Cell->querySubObject("Range()"); QString data = table->item(i,j)->text(); // вставка значения переменной data (любой тип, приводимый к QVariant) в полученную ячейку CellRange->dynamicCall("InsertAfter(Text)", data); // освобождение памяти delete CellRange; delete Cell; } }