程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 在VC中如何將數據導入Word中

在VC中如何將數據導入Word中

編輯:vc教程

  在給企業開發的項目中,客戶經常要求將數據匯總顯示並打印。站在程序員的立場上,簡單數據的匯總打印可以采用VB自帶報表,對復雜的數據用水晶報表或第三方打印控件。在企業中,匯總數據另一個目的是為了便於交流和共享資源,報表的格式通常固定,內容可以自己調整,他們對 Excel 和 Word 情有獨鐘。

  剛完成的項目中,客戶要求將匯總的數據以三種方式進行顯示和打印:AutoCAD、Excel 和 Word 文檔中。前兩種方式網上資源很多,對 Word 文檔我找到例子不是很多。由於需要和 AutoCAD 開發程序結合,不能將 Word 文檔以 OLE 的方式 嵌入到程序中,文檔只能在內存中形成,這將占用大量的CPU資源,另開一個線程進行處理,線程間以發送消息的方式進行通信。

  首先在VC引入Word, 對格式相同的地方一定使用模版的方式進行處理,這可以大大的提高運行速度,Word中的模版為*.dot。加載模版的代碼為:

  sDocs=sApp.GetDocuments();
  sDocs.AttachDispatch(sApp.GetDocuments(),true);
  COleVariant vFalse((long)0),vTrue((long)1);
  sDoc.AttachDispatch(sDocs.Add(COleVariant(_variant_t(strFileName)), vFalse,vFalse, vTrue));

  需要注意的是,如果Word中使用到表格,VBA錄制的全是Selection對象的處理方法,在VC中使用Selection對象的MoveUp和MoveDown函數時會出現不確定現象(如果你知道為什麼的話請告訴我)。如果你需要繪制表格,不要用程序來動態形成,繪制表格的代碼是很繁瑣的,而且在頁眉中繪制單元格是很難控制的。可以先在模版中繪出你要的表格格式,然後用程序復制單元格或者直接使用模版中的單元格。由於我做的項目表格的行數不確定,我采用的是復制單元格的方式(速度比較慢,誰有更好的方法?)。

  剩下的處理流程,就是你想做什麼操作,先在Word中錄制一段宏,然後查看其VBA代碼,並將其轉化到Vc程序中。這就看你Word使用的熟練程度了,例如如何把不同頁的頁眉頁腳設置不同,如何得到當前頁的頁數以及總的文檔的頁數,具體可以參考程序。

  VC中也可以像Excel中調用模版中存在的宏,代碼如下:
  VARIANT vtMissing ;vtMissing.vt =VT_ERROR;
  vtMissing.scode =DISP_E_PARAMNOTFOUND;
  sApp.Run("AddCell",&vtMissing,&vtMissing,&vtMissing,
  &vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,
  &vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,
  &vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,
  &vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing);

  本文的目的是想起到拋磚引玉的作用,看看大家在VC中使用Word有什麼更好的方法

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved