Qt 向word中插入文字(使用QAxWidget和QAxObject)


  1. pro 文件中要加入   

        CONFIG += qaxcontainer   

       2. main.cpp

[cpp]  view plain  copy
 
  1. #include <QApplication>  
  2. #include <QAxWidget>  
  3. #include <QAxObject>  
  4.   
  5. int main(int argc, char* argv[])  
  6. {  
  7.      QApplication app(argc, argv);  
  8.      QAxWidget *word=new QAxWidget("Word.Application", 0, Qt::MSWindowsOwnDC);  
  9.      word->setProperty("Visible", true);  
  10.      // 獲取所有的工作文檔  
  11.      QAxObject * documents = word->querySubObject("Documents");  
  12.      // 以文件template.doc為模版新建一個文檔  
  13.      documents->dynamicCall("Add(QString)",QString::fromLocal8Bit("D:/doc/template.doc"));  
  14.      // 獲取當前激活的文檔  
  15.      QAxObject *document=word->querySubObject("ActiveDocument");  
  16.   
  17.      // 獲取文檔中名字為text的標簽  
  18.      QAxObject*bookmark_text=document->querySubObject("Bookmarks(QVariant)","text");  
  19.      // 選中標簽,將字符InsertText插入到標簽位置  
  20.      if(!bookmark_text->isNull()){  
  21.      bookmark_text->dynamicCall("Select(void)");  
  22.      bookmark_text->querySubObject("Range")->setProperty("Text","InsertText");  
  23.      }   
  24.   
  25.      // 將文件另存為docbyqt.doc,關閉工作文檔,退出應用程序  
  26.      document->dynamicCall("SaveAs (const QString&)", QString("D:/doc/docbyqt.doc"));  
  27.      document->dynamicCall("Close (boolean)", false);  
  28.      word->dynamicCall("Quit()");  
  29.   
  30.     return app.exec();  
  31. }  

http://blog.csdn.net/zbc415766331/article/details/36396159

網上關於qt操作word的資料實在是太少了,搞了半天終於能在word 表格中插入標簽的地方插入圖片了。

1.在pro中加入

CONFIG   += qaxcontainer

2.main.cpp

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. #include <QApplication>  
  2. #include <QAxWidget>  
  3. #include <QAxObject>  
  4.   
  5. int main(int argc, char* argv[])  
  6. {  
  7.      QApplication app(argc, argv);  
  8.      QAxWidget *word=new QAxWidget("Word.Application", 0, Qt::MSWindowsOwnDC);  
  9.      word->setProperty("Visible", true);  
  10.      // 獲取所有的工作文檔  
  11.      QAxObject * documents = word->querySubObject("Documents");  
  12.      // 以文件template.doc為模版新建一個文檔  
  13.      documents->dynamicCall("Add(QString)",QString::fromLocal8Bit("D:/doc/template.doc"));  
  14.      // 獲取當前激活的文檔  
  15.      QAxObject *document=word->querySubObject("ActiveDocument");  
  16.   
  17.      // 獲取文檔中名字為text的標簽  
  18.      QAxObject*bookmark_text=document->querySubObject("Bookmarks(QVariant)","text");  
  19.      // 選中標簽,將字符InsertText插入到標簽位置  
  20.      if(!bookmark_text->isNull()){  
  21.      bookmark_text->dynamicCall("Select(void)");  
  22.      bookmark_text->querySubObject("Range")->setProperty("Text","InsertText");  
  23.      }  
  24.   
  25.      // 獲取文檔中名字為pic的標簽  
  26.      QAxObject*bookmark_pic=document->querySubObject("Bookmarks(QVariant)","pic");  
  27.       // 選中標簽,將圖片插入到標簽位置  
  28.      if(!bookmark_pic->isNull())  
  29.      {  
  30.          bookmark_pic->dynamicCall("Select(void)");  
  31.   
  32.          QAxObject *range;  
  33.          range = bookmark_pic->querySubObject("Range");  
  34.          QVariant tmp = range->asVariant();  
  35.          QList<QVariant>qList;  
  36.          qList<<QVariant("D:/1.png");  
  37.          qList<<QVariant(false);  
  38.          qList<<QVariant(true);  
  39.          qList<<tmp;  
  40.   
  41.          QAxObject *Inlineshapes = document->querySubObject("InlineShapes");  
  42.          Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList);  
  43.      }  
  44.   
  45.      // 將文件另存為docbyqt.doc,關閉工作文檔,退出應用程序  
  46.      document->dynamicCall("SaveAs (const QString&)", QString("D:/doc/docbyqt.doc"));  
  47.      document->dynamicCall("Close (boolean)", false);  
  48.      word->dynamicCall("Quit()");  
  49.   
  50.     return app.exec();  
  51. }  

addpicture 微軟官方注解: http://msdn.microsoft.com/en-us/library/office/aa171535(v=office.11).aspx

http://blog.csdn.net/zbc415766331/article/details/36659993

 

HRESULT r;
r = CoInitialize(0);
// r =CoInitializeEx(0, COINIT_MULTITHREADED);
// m_word = new QAxWidget("Word.Application", widget, Qt::MSWindowsOwnDC );
m_word = new QAxObject("Word.Application" );
if( m_word == NULL ) return true;
//m_word->setProperty("Visible", false); //設置為隱藏
QAxObject * documents = m_word->querySubObject("Documents"); //獲取所有工作的文檔

http://www.qtcn.org/bbs/read-htm-tid-60802.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM