摘要:使用msword.olb操作word,实现两个word文件合并,将别一个word的插入到当前文件当中
在我们程序的入口添加COM组件的初始化:
if (CoInitialize(NULL) != 0)
{
AfxMessageBox(“初始化COM支持库失败!”);
exit(1);
}
在程序的退出释放资源处,加入退出时释放COM组件卸载等
{
CoUninitialize(); //来释放COM支持库。
}
这样我们就完成了对COM支持库的代码已经完成。
下面要从Office的安装目录中找到对VC操作Word文件的动态库,我使用的Office版本中是MSWORD.OLB这个也是动态库的形式,是微软公司主要的文件结果之一。
(和使用普通的COM组件一样)选择VC++的View菜单里面的ClassWizad命令,会弹出一个对话框;然后点击Add Class…按钮选择From a type library,会弹出一个打开对话框,从这里打开Office安装目录下…/Office11/MSWORD.OLB文件,从里面选择几个要用到的类:_Application, Documents, _Document, Selection, Bookmarks,Bookmark 点击OK按钮。会在程序中生成一个msword.h和msword.cpp文件,这些文件中包含了刚才我们选择的几个类的代码。
1、利用MSWORD.OLB产生的msword.h和msword.cpp两个类文件及书签实现在一doc文件中插入另一个word文件。
<span style="white-space:pre"> </span>_Application oWordApp; Documents oWordDocs; _Document oWordDoc; Selection oWordSel; Bookmarks oWordBkmks; Bookmark oWordBkmk; COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR); //创建WORD实例 if (!oWordApp.CreateDispatch(_T("Word.Application"))) { AfxMessageBox(_T("Word CreateDispatch Failed!")); return ; } try { oWordApp.SetVisible(TRUE); oWordApp.Activate(); oWordDocs = oWordApp.GetDocuments(); CString strDoc = _T("C:\\Users\\Administrator\\Desktop\\EDB085E1A56D44978A241A84B0AF391D.doc"); oWordDoc = oWordDocs.Open(COleVariant(strDoc),vFalse,vFalse,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt); oWordSel = oWordApp.GetSelection(); //获得Selection实例 //方法一、 CString sField = _T("正文内容");<span style="white-space:pre"> </span>//正文内容书签 oWordSel.GoTo(COleVariant((short)-1),vOpt,vOpt,COleVariant(sField));<span style="font-family: Arial;">//定位正文内容书签</span><span style="white-space:pre"> </span> oWordDoc = oWordApp.GetActiveDocument(); oWordBkmks = oWordDoc.GetBookmarks(); oWordBkmks.SetDefaultSorting(-1); oWordBkmks.SetShowHidden(FALSE); <span style="white-space:pre"> </span>//在定位的书签处的插入文件
<span style="white-space:pre"> </span>oWordSel.InsertFile(_T("C:\\Users\\Administrator\\Desktop\\kanq-C175F1A14DB0B24B548558835283315B01.doc"),vOpt,vTrue,vFalse,vFalse); //方法二、循环遍历书签容器,找到正文内容书签。 //oWordBkmks = oWordDoc.GetBookmarks(); //for (long nCount = 0 ; nCount < oWordBkmks.GetCount() ; nCount++) //{ // oWordBkmk = oWordBkmks.Item(COleVariant((short)(nCount+1))); // if (oWordBkmk.GetName().CompareNoCase(_T("正文内容")) == 0) // { // oWordSel.InsertFile(_T("D:\\My Documents\\表单.doc"),vOpt,vTrue,vFalse,vFalse); // } //} oWordDoc.Save(); oWordBkmks.ReleaseDispatch(); oWordSel.ReleaseDispatch(); oWordDoc.Close(vOpt,vOpt,vOpt); oWordDoc.ReleaseDispatch(); oWordDocs.ReleaseDispatch(); } catch(...){} oWordApp.Quit(vOpt,vOpt,vOpt); oWordApp.ReleaseDispatch();