vc中调用word的简单入门

来源:互联网 发布:wow for mac 国服 编辑:程序博客网 时间:2024/05/22 01:51

首先,需要了解类型库 
  一个类型库是一个提供COM对象功能信息的文件或文件的一部分,而且类型库包含了有关类的信息。注意,类型库并不存储实际的对象,而只是存储有关这些对象的信息。类型库详细说明了一个自动化客户机为对象需要调用的方法和属性的信息,比如说它详细的描述了接受或返回的值。 
  每一个Microsoft Office应用程序都在一个dll文件中提供了多种类型库资源,这种dll文件叫做目标库(*.olb),如word2003的目标库是msword.olb
其次,如何创建自动化客户机
(转载)用VC++创建一个自动化客户机 (以word2003说明)
  The COleDispatchDriver Class 
  vc提供了一个COleDispatchDriver类来处理自动化对象的IDispatch接口,关于COleDispatchDrive类的属性和函数请读者自行查阅类库,这里就不再赘述。 
  1.创建一个新的Dialog-Base MFC AppWizard Exe工程名为"WordAutomation";注意在MFC AppWizard - Step 2 of 4中的Automaiton选项上打上勾
2.在View菜单中,点击ClassWizard,然后进入Automation标签中点击Add Class,选择From A Type Library。找到Microsoft Office 2003类型库msword.olb,选择_Application,_Document,_Documents,Selection四个类,如有其他需要(例如画表也可选择其他的类)。 
这个过程会在工程中创建两个新的文件:msword.h和msword.cpp,这些文件构成了word类型库的所选择的类和类的成员函数。在ClassView视图中查看从word类型库生成的所有的类,然后双击_Application类来查看它的定义,你就会注意到_Application类是来源于COleDispatchDriver。
// _Application wrapper class
class _Application : public COleDispatchDriver
{
   ......
}
  至于这些类和成员函数的功能和用法,我有一个简便的方法,那就是使用word中工具菜单中的宏的录制功能,把你所想要进行的操作先用宏录制下来,然后查看这些宏代码,你就会清楚要使用哪个类,哪些成员函数和成员函数应该带些什么参数了。虽然这些代码都是用VB写的,但你可以很容易的转换成VC++中的代码。
word中选择“工具-宏-录制宏”,可以创建一个宏,然后“工具-宏-宏”写入你录制的宏名,点编辑,就可以看见代码了,hoho.

3. 剩下的就是如何使用了。
如:开始一个新的Microsoft Word 2003实例 
_Application oWordApp;
oWordApp.CreateDispatch("Word.Application", NULL)

如:创建一个新的文档
Documents oDocs;
_Document oDoc;
oDocs = oWordApp.GetDocuments();
oDoc = oDocs.Add(vOpt, vOpt, vOpt, vOpt);
如:把文本添加到word文档
Selection oSel;
oSel = oWordApp.GetSelection();
oSel.TypeText("one");

如:保存文
_Document oActiveDoc; 
oActiveDoc = oWordApp.GetActiveDocument();
oActiveDoc.SaveAs
最后要退出实例:
oWordApp.quit
另外一个比较详细的之一:
-----------------提示:应该是先要导入MSWORD9.OLB-----------

COleVariant vTrue((short)TRUE), 
vFalse((short)FALSE), 
vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR); 

//开始一个Microsoft Word实例 
_Application oWordApp; 
if (!oWordApp.CreateDispatch("Word.Application", NULL)) 
{ 
AfxMessageBox("CreateDispatch failed.", MB_OK | MB_SETFOREGROUND); 
return; 
} 

//建立一个新的文档 
Documents oDocs; 
_Document oDoc; 
oDocs = oWordApp.GetDocuments(); 
oDoc = oDocs.Add(vOpt, vOpt); 

//给文档添加文本 
Selection oSel; 
oSel = oWordApp.GetSelection(); 
oSel.TypeText("one"); 
oSel.TypeParagraph(); 
oSel.TypeText("two"); 
oSel.TypeParagraph(); 
oSel.TypeText("three"); 

//保存文档 
_Document oActiveDoc; 
oActiveDoc = oWordApp.GetActiveDocument(); 
oActiveDoc.SaveAs(COleVariant("c://doc1.doc"), 
COleVariant((short)0), 
vFalse, COleVariant(""), vTrue, COleVariant(""), 
vFalse, vFalse, vFalse, vFalse, vFalse); 

//退出WORD 
oWordApp.Quit(vOpt, vOpt, vOpt); 
另外一个比较详细的之二:
#include"msword9.h" 
#include <atlbase.h>
void CFasfcDlg::OnButton1() 
{ 
AfxOleInit();

_Application app; 
COleVariant vTrue((short)TRUE), vFalse((short)FALSE); 
app.CreateDispatch(_T("Word.Application")); 
app.SetVisible(FALSE);
//Create New Doc 
Documents docs=app.GetDocuments(); 
CComVariant tpl(_T("")),Visble,DocType(0),NewTemplate(false); 
docs.Add(&tpl,&NewTemplate,&DocType,&Visble);
//Add Content:Text 
Selection sel=app.GetSelection(); 
sel.TypeText(_T("/t/t/t/t/t第一次玩儿Word/r/n")); 
sel.TypeText(_T("/t/t/t/t/t/t/t/t----------先来一个简单的/r/n")); 
sel.ReleaseDispatch(); 
docs.ReleaseDispatch(); 
app.SetVisible(TRUE); 
app.ReleaseDispatch();
} 

原创粉丝点击