- ·上一篇:word分隔符如何接,分隔符
- ·下一篇:word如何用尾注插入,插入
vc如何读取word,读取,vc
1.请高手帮忙解决一下,如何在VC中读取word文件的内容并进行处理
vc6测试成功,写的有点乱你自己好好看看吧._Application app; Documents docs; _Document doc; Tables WordTables; Table WordTable; Cell WordCell; Range WordRange; Columns WordCols; Rows WordRows; if(!app.CreateDispatch("Word.Application")) { MessageBox("创建Word服务失败!",_T("提示"),MB_ICONERROR); return; } docs.AttachDispatch(app.GetDocuments()); app.SetVisible(true);//打开文件 IDispatch *dispatch=docs.Open(&_variant_t(_T("d:\\test.doc")),&vtMissing,&vtMissing,&vtMissing, &vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing, &vtMissing,&vtMissing,&vtMissing,&vtMissing); if(dispatch) { doc.AttachDispatch(dispatch); } else {//出错了 CString szErr=""; szErr.Format("打开文件出错,请查看文件是否存在!"); ::AfxMessageBox(szErr); //退出程序,释放对象 app.Quit(&vtMissing,&vtMissing,&vtMissing); docs.ReleaseDispatch(); app.ReleaseDispatch(); return; } dispatch=doc.GetTables(); if(dispatch) { WordTables.AttachDispatch(dispatch); } else {//出错了 CString szErr=""; szErr.Format("取得表格集合出错!"); ::AfxMessageBox(szErr); //退出程序,释放对象 app.Quit(&vtMissing,&vtMissing,&vtMissing); docs.ReleaseDispatch(); app.ReleaseDispatch(); doc.ReleaseDispatch(); return; } int nTableCount=WordTables.GetCount(); if(nTableCount>0) { for(int i=1;i<=nTableCount;i++) { WordTable.AttachDispatch(WordTables.Item(i)); WordCols.AttachDispatch(WordTable.GetColumns()); WordRows.AttachDispatch(WordTable.GetRows()); int nCols=WordCols.GetCount(); int nRows=WordRows.GetCount(); for(int j=1;j<=nRows;j++) { for(int k=1;k<=nCols;k++) { dispatch=WordTable.Cell(j,k); WordRange.AttachDispatch(dispatch); CString szText=WordRange.GetText(); this->MessageBox(szText); } } } } app.Quit(&vtMissing,&vtMissing,&vtMissing); doc.ReleaseDispatch(); docs.ReleaseDispatch(); app.ReleaseDispatch();。
2.vc读取word
转自
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; }
本文来自CSDN博客,转载请标明出处:
