使用msword.olb操作word(1)

摘要:使用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();
时间: 2024-10-08 21:15:57

使用msword.olb操作word(1)的相关文章

使用msword.olb操作word(5)

摘要: 使用msword.olb规范WORD文件字体,行间距,页边距. _Application oWordApp; Documents oWordDocs; _Document oWordDoc; Selection oWordSel; _ParagraphFormat oWordParFor; _Font oWordFont; PageSetup oWordPage; Styles oWordStyles; CString strDoc = _T("C:\\正文.doc"); CO

使用msword.olb操作word(4)

摘要:使用msword.olb实现获取doc文件的页数 _Application oWordApp; Documents oWordDocs; _Document oWordDoc; Window oWordWindow; Pane oWordPane; Pages oWordPages; COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR); BOOL bFla

使用msword.olb操作word(6)

摘要:使用msword.olb实现在word文件中插入,生成表格 例子部分代码: _Application oWordApp; Documents oWordDocs; _Document oWordDoc; Selection oWordSel; Tables oWordTables; Table oWordTable; Range oWordRange; InlineShapes oWordInlineShap; COleVariant vTrue((short)TRUE),vFalse((

使用msword.olb操作word(2)

摘要:使用msowrd.olb实现将另一个doc文件中的内容,赋值到当前打开的word文件中,并使用现当前文件的格式设置.也就是实现两个doc文件内容合并. 例子: _Application oWordApp; Documents oWordDocs; _Document oWordDoc; _Document oWordDoc_; Selection oWordSel; Selection oWordSel_; Bookmarks oWordBkmks; Bookmark oWordBkmk;

使用msword.olb操作word(3)

摘要:实现在word中插入图片,并实现图片插入类型:嵌入型.图片位于文字上方.图片位于文字下方.上下型.穿越型.紧密型.四周型 例子代码如下: _Application oWordApp; Documents oWordDocs; _Document oWordDoc; Selection oWordSel; Find oWordFind; Replacement oWordRep; InlineShapes oWordShapes; InlineShape oWordShape; Option

Asp.net操作Word文档,原来这么简单啊!

引用Word对象库文件  具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为DLL组件,这样我们只要在源码中创建该组件对象即可达到操作Word的目的! 如图 这会自动在你的应用程序文件夹中放置一个程序集(assembly)将COM接口邦定到Word. 上传并存储word文件 上传文件时首先通过上传控件找到所需上传的文件,然后获取文件的大小,最后以流的形式写入数据库 具体代码为 C#

VC操作WORD文档总结

一.写在开头 最近研究word文档的解析技术,我本身是VC的忠实用户,看到C#里面操作WORD这么舒服,同时也看到单位有一些需求,就想尝试一下,结果没想到里面的技术点真不少,同时网络上的共享资料很多,但是很多就是起了一个头没有完整的资料,因此在此记录一下,首先感谢怪兽哥哥(开源了了IOCP一整套开源库的家伙还有很多隐藏技能大家可以关注他).骨头哥(不少好资料).savageII哥(大牛)这些网友他们很有共享精神.废话不说了开始正题. 二.环境搭建 我用的VC2010,其实在VC6.0以上的版本设

【MFC/C++操作word】Word篇

MFC操作Word 一.初始化操作 1.导入类库 下面的操作基于Word2003 点击查看->建立类向导-> Add Class...\From a type Library...-> C:\Program Files\Microsoft Office\Office\MSWORD9.OLB,接下来就可以看到导入的类msword.h, msword.cpp. 2.初始化COM 找到App的InitInstance()函数,在其中添加 AfxOleInit()函数的调用,如: if (!Af

VC+++ 操作word

最近完成了一个使用VC++ 操作word生成扫描报告的功能,在这里将过程记录下来,开发环境为visual studio 2008 导入接口 首先在创建的MFC项目中引入word相关组件 右键点击 项目 --> 添加 --> 新类,在弹出的对话框中选择Typelib中的MFC类. 然后在弹出的对话框中选择文件,从文件中导入MSWORD.OLB组件. 这个文件的路径一般在C:\Program Files (x86)\Microsoft Office\Office14 中,注意:最后一层可能不一定是