转自 http://www.cnblogs.com/zhangyin/archive/2007/03/04/663345.html
1.在VC中新建一控制台程序,选支持MFC(当然,你也可以不选择支持MFC的,不过会很麻烦)
2.按CTRL+W调出MFC ClassWizard,Add Class->From a type library,选择你的word的类型库(例如我的是word2003,安装在e盘,我的路径是"e:/edittools/microsoft office/office11/msword.olb"),选择完毕后,在弹出的窗口中选择要让classwizard生成的包装类,在本例中要用到 _Application,Documents,_Document,Range这四个类,选中他们后按OK
3.进入你的main函数所在的cpp文件,加入头文件引用
#include "msword.h" //引用刚才classwizard生成的idispatch包装类
4.加入代码
int
_tmain(
int
argc, TCHAR
*
argv[], TCHAR
*
envp[])
{
int nRetCode = 0 ;
if ( ! AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0 ))
{
cerr << _T( " Fatal Error: MFC initialization failed " ) << endl;
nRetCode = 1 ;
}
else
{
if (CoInitialize(NULL) != S_OK)
{
AfxMessageBox( " 初始化COM支持库失败! " );
return - 1 ;
}
_Application wordApp;
Documents docs;
_Document doc;
Range aRange;
COleVariant vTrue(( short )TRUE),
vFalse(( short )FALSE),
vOpt(( long )DISP_E_PARAMNOTFOUND, VT_ERROR);
wordApp.CreateDispatch( " Word.Application " ,NULL);
wordApp.SetVisible(FALSE);
docs = wordApp.GetDocuments();
doc = docs.Open(COleVariant( " d://txt.doc " ),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
aRange = doc.Range(vOpt,vOpt);
AfxMessageBox(aRange.GetText()); // 这里GetText得到的就是word文件的纯文本了,你可以将其写到txt文件中
doc.Close(vOpt,vOpt,vOpt);
wordApp.Quit(vOpt,vOpt,vOpt);
CoUninitialize();
}
return nRetCode;
}
{
int nRetCode = 0 ;
if ( ! AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0 ))
{
cerr << _T( " Fatal Error: MFC initialization failed " ) << endl;
nRetCode = 1 ;
}
else
{
if (CoInitialize(NULL) != S_OK)
{
AfxMessageBox( " 初始化COM支持库失败! " );
return - 1 ;
}
_Application wordApp;
Documents docs;
_Document doc;
Range aRange;
COleVariant vTrue(( short )TRUE),
vFalse(( short )FALSE),
vOpt(( long )DISP_E_PARAMNOTFOUND, VT_ERROR);
wordApp.CreateDispatch( " Word.Application " ,NULL);
wordApp.SetVisible(FALSE);
docs = wordApp.GetDocuments();
doc = docs.Open(COleVariant( " d://txt.doc " ),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
aRange = doc.Range(vOpt,vOpt);
AfxMessageBox(aRange.GetText()); // 这里GetText得到的就是word文件的纯文本了,你可以将其写到txt文件中
doc.Close(vOpt,vOpt,vOpt);
wordApp.Quit(vOpt,vOpt,vOpt);
CoUninitialize();
}
return nRetCode;
}