VC2003使用MSWORD.OLB读取表格数据

 在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();


 

 

你可能感兴趣的:(VC2003使用MSWORD.OLB读取表格数据)