VC對Office進行操作

2021-04-09 10:18:04 字數 2683 閱讀 5920

obtguigcomofficeprinter.h

#if !defined(afx_obtguigcomofficeprinter_h__03a0c2d8_dfc8_4b51_8adb_994b86bacb82__included_)

#define afx_obtguigcomofficeprinter_h__03a0c2d8_dfc8_4b51_8adb_994b86bacb82__included_

#if _msc_ver > 1000

#pragma once

#endif // _msc_ver > 1000 #include "comdef.h"

#include "obtguigcommsword9.h"

#include "obtguigcommsppt9.h"

#include "obtguigcomexcel9.h"

class afx_ext_class obtguigcomofficeprinter

obtguigcomofficeprinter::~obtguigcomofficeprinter()

以上是用office開啟相應的文件進行列印的操作,如果你需要進行相應的其他操作,

你可以用office裡面的巨集進行錄製然後轉化為相應的**。

例2:給企業開發的專案中,客戶經常要求將資料彙總顯示並列印。站在程式設計師的立場上,簡單資料的彙總列印可以採用vb自帶報表,對複雜的資料用水晶報表或第三方列印控制項。在企業中,彙總資料另乙個目的是為了便於交流和共享資源,報表的格式通常固定,內容可以自己調整,他們對 excel 和 word 情有獨鍾。

剛完成的專案中,客戶要求將彙總的資料以三種方式進行顯示和列印:autocad、excel 和 word 文件中。前兩種方式網上資源很多,對 word 文件我找到例子不是很多。由於需要和 autocad 開發程式結合,不能將 word 文件以 ole 的方式 嵌入到程式中,文件只能在記憶體中形成,這將占用大量的cpu資源,另開乙個執行緒進行處理,執行緒間以傳送訊息的方式進行通訊。

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

需要注意的是,如果word中使用到**,vba錄製的全是selection物件的處理方法,在vc中使用selection物件的moveup和movedown函式時會出現不確定現象(如果你知道為什麼的話請告訴我)。如果你需要繪製**,不要用程式來動態形成,繪製**的**是很繁瑣的,而且在頁首中繪製單元格是很難控制的。可以先在模版中繪出你要的**格式,然後用程式複製單元格或者直接使用模版中的單元格。由於我做的專案**的行數不確定,我採用的是複製單元格的方式(速度比較慢,誰有更好的方法?)。

剩下的處理流程,就是你想做什麼操作,先在word中錄製一段巨集,然後檢視其vba**,並將其轉化到vc程式中。這就看你word使用的熟練程度了,例如如何把不同頁的頁首頁尾設定不同,如何得到當前頁的頁數以及總的文件的頁數,具體可以參考程式。

vc中也可以像excel中呼叫模版中存在的巨集,**如下:

例3:#include

#include

#pragma warning (disable:4146 4192 4786 4081)

#define use_officexp 1

#ifdef use_officexp

#import "c:/program files/common files/microsoft shared/office10/mso.dll"

#import "c://program files//common files/microsoft shared//vba/vba6/vbe6ext.olb"

#import "c:/program files/microsoft office/office10/msword.olb" rename("exitwindows","exitwindow***")

#import "c:/program files/microsoft office/office10/excel.exe" rename("dialogbox", "dialogboxxl") rename("rgb", "rbgxl") /

rename("documentproperties", "documentpropertiesxl") exclude("ifont","ipicture")

#else

#import "c:/program files/microsoft office/office/mso9.dll"

#import "c:/program files/common files/microsoft shared/vba/vba6/vbe6ext.olb" no_namespace

#import "c:/program files/microsoft office/office/msword9.olb" rename("exitwindows","_exitwindows")

#import "c:/program files/microsoft office/office/excel9.olb" rename("dialogbox", "dialogboxxl") rename("rgb", "rbgxl") /

rename("documentproperties", "documentpropertiesxl") exclude("ifont","ipicture")

#endif

int main(int argc, char* argv){

VC對csv檔案進行讀寫操作

csv是指 逗號分割值 檔案 comma separated value 就是儲存以逗號分隔的數值的純文字檔案,excel可以直接開啟。csv檔案通常有多行,每行儲存一組資料,用來記錄實驗資料等最合適不過了,csv檔案內容示例 10 23,0.123,0.234 10 24,0,456,0.789 ...

用VC 對IE瀏覽器進行高階操作

以下為程式 writereg 函式的主要內容 void ctestview writereg 建立工具選單 lpsubkey software microsoft internet explorer extensions if error success regcreatekeyex hkey lo...

C 對XML進行操作

c 操作xml時,要引入命名空間using system.xml 獲取根節點的方法 1 知道根節點名稱 xmlnode root xmldoc.selectsinglenode 根節點名稱 2 不知道根節點名稱 xmlelement root xmldoc.documentelement xml中n...