woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

如何在控制台程序中读取WORD文档的内容?

1.VC中新建一控制台程序,选支持MFC(当然,你也可以不选择支持MFC的,不过会很麻烦) 
 
2.
CTRL+W调出MFC  ClassWizardAdd  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.
加入代码  

clip_image001int  _tmain(int  argc,  TCHAR*  argv[],  TCHAR*  envp[]) 
clip_image002clip_image003
clip_image004
clip_image005   
int  nRetCode  =  0; 
clip_image005   
clip_image005   
if  (!AfxWinInit(::GetModuleHandle(NULL),  NULL,  ::GetCommandLine(),  0)) 
clip_image006clip_image007   
clip_image004
clip_image005        cerr  <<  _T("Fatal  Error:  MFC  initialization  failed")  <<  endl; 
clip_image005        nRetCode  =  1; 
clip_image008    } 
clip_image005   
else 
clip_image006clip_image007   
clip_image004
clip_image005       
if  (CoInitialize(NULL)  !=  S_OK)   
clip_image006clip_image007       
clip_image004{   
clip_image005            AfxMessageBox("
初始化COM支持库失败!");   
clip_image005           
return  -1; 
clip_image008        } 
clip_image005       
clip_image005        _Application  wordApp; 
clip_image005        Documents  docs; 
clip_image005        _Document  doc; 
clip_image005        Range  aRange; 
clip_image005       
clip_image005        COleVariant  vTrue((
short)TRUE),   
clip_image005            vFalse((
short)FALSE),   
clip_image005            vOpt((
long)DISP_E_PARAMNOTFOUND,  VT_ERROR);   
clip_image005       
clip_image005        wordApp.CreateDispatch("Word.Application",NULL); 
clip_image005        wordApp.SetVisible(FALSE); 
clip_image005        docs=wordApp.GetDocuments(); 
clip_image005        doc=docs.Open(COleVariant("d:\\txt.doc"),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt); 
clip_image005        aRange=doc.Range(vOpt,vOpt); 
clip_image005       
clip_image005        AfxMessageBox(aRange.GetText());
//这里GetText得到的就是word文件的纯文本了,你可以将其写到txt文件中 
clip_image005
       
clip_image005        doc.Close(vOpt,vOpt,vOpt); 
clip_image005        wordApp.Quit(vOpt,vOpt,vOpt); 
clip_image005       
clip_image005       
clip_image005       
clip_image005        CoUninitialize(); 
clip_image008    } 
clip_image005   
clip_image005   
return  nRetCode; 
clip_image009}

 

posted on 2011-02-24 16:29 肥仔 阅读(3051) 评论(0)  编辑 收藏 引用 所属分类: Windows开发


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理