在VC2003中新建一程序,选择项目--》添加类--》MFC--》类型库中的MFC类。
然后选择“文件”单选按钮,默认选择的是“注册表”单选按钮。
从“位置”的“...”按钮(浏览)中选择word安装路径中的MFWORD.OLB文件,
然后在“列表”中就会显示所有的类型,选择需要使用的类型,添加到右侧。
完成后,会把选择的类的头文件添加到你的项目中,这样你就可以使用这些类
操作word文档了。
首先要包含头文件,即需要的类所在的.h文件。
以下为使用这些类进行读取Word中表格数据的实现:
CApplication app; CDocuments docs; CDocument0 doc; CTables0 WordTables; CTable0 WordTable; CCell WordCell; CRange WordRange; CColumns0 WordCols; CRows WordRows; if(!app.CreateDispatch(_T("Word.Application"))) { AfxMessageBox(_T("创建Word服务失败!")); return false; } docs.AttachDispatch(app.get_Documents()); app.put_Visible(false); COleVariant vFileName(strFile); COleVariant vTrue((short)TRUE); COleVariant vFalse((short)FALSE); COleVariant vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); //打开文件 IDispatch *dispatch=docs.Open(vFileName,vTrue,vFalse,vFalse, vOptional,vOptional,vOptional,vOptional,vOptional,vOptional,vOptional, vOptional,vOptional,vOptional,vOptional,vOptional); if(dispatch) { doc.AttachDispatch(dispatch); } else { //出错了 CString szErr=""; szErr.Format("打开文件出错,请查看文件是否存在!"); ::AfxMessageBox(szErr); //退出程序,释放对象 app.Quit(&vOptional,&vOptional,&vOptional); docs.ReleaseDispatch(); app.ReleaseDispatch(); return false; } dispatch=doc.get_Tables(); if(dispatch) { WordTables.AttachDispatch(dispatch); } else { //出错了 CString szErr=""; szErr.Format("取得表格集合出错!"); ::AfxMessageBox(szErr); //退出程序,释放对象 app.Quit(&vOptional,&vOptional,&vOptional); docs.ReleaseDispatch(); app.ReleaseDispatch(); doc.ReleaseDispatch(); return false; } int nTableCount=WordTables.get_Count(); if(nTableCount>0) { for(int i=1;i<=1;i++) { WordTable.AttachDispatch(WordTables.Item(i)); WordCols.AttachDispatch(WordTable.get_Columns()); WordRows.AttachDispatch(WordTable.get_Rows()); int nCols=WordCols.get_Count(); int nRows=WordRows.get_Count(); 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.get_Text(); AfxMessageBox(szText); } } } } app.Quit(&vOptional,&vOptional,&vOptional); doc.ReleaseDispatch(); docs.ReleaseDispatch(); app.ReleaseDispatch();