摘要:使用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();