VC 操作Word 2003的简单例子

VC中导出Office的类库, 用于操作Office 在使用VC控制Office时, 找到一个例子工程, 发现工程中有如下8个文件: excel.tlh, excel.tli, mso.tlh, mso.tli, msword.tlh, msword.tli, vbe6ext.tlh, vbe6ext.tli. 原来这些是Office导出来的类库, 使用这些类库, 就可以在你的工程中操作Office. 导出方法: 随便建一个MFC工程 阅读详情

实现这种功能通常的做法便是调用Office提供的COM操作。一般你要在的office安装目录下找到一个名为“MSWORD.OLB” 的库文件,2003的话一般是放在“C:/program files/office/OFFICE11”这个路径下。找到它以后,你可以将其拷贝到自己的工程目录下,也可以直接使用它的文件路径,这就关系到import

里导入该库时的参数。在把代码拷贝到你的工作区以后,可以选择其中一个对document进行操作的函数,比如:“get_Documents”转到定义,你会发现出现了一个msword.tlh的文件,具体怎么产生的,可以自己研究一下,小弟这里仅通知你怎么怎么简单地使用它,当然了这其中有的地方转了点小弯,以便大家对它进行探索,否则光用了代码,没有收获是没有任何意义的。

下面说一下,因为每一个WORD版本里所提供的COM 函数的名字都不一样,但用法都是相似的,而且,你可以对一次对文档的操作录制一个宏,然后看它的宏代码,那里面所使用的函数和我们在VC里所要编辑的是一样的。可以每次操作后,分析宏代码,然后对应着写,收效较大。小声说一下,里面的函数使用是没有说明的,我都是根据宏里面的参数模仿着写下来的。在此,小弟只是进行了创建一个新的文档,并将一些数据写进去,然后将文件另存。其它具体的、复杂的应用,录个宏先,然后分析一下。。

Note:这里尤其要注意的是数据类型COleVariant,BSTR,因为用错了,效果就是没有!好了,闲言少叙,请看代码:  

#include   "afxdisp.h" 
#import    "MSWORD.OLB" named_guids raw_interfaces_only rename("ExitWindows", "wordExitWindows")  
/*
/;--------------------------------------------
/;  -COMMENT  -  Huang Zuosheng 2007-08-08    |
/;  -CONTENT  -  VC code that operate Word          + 
/;               process to generate notice                       +
/;               when a  transaction occurs                       |
/;  -FUNCTION -  'WriteToWord' create a new         +
/;               document and write words to                   +
/;               it based on the format that                        +
/;               we set.                                                           |
/;  -PARAMETER- 'contentText': the content             +
/;               text that you want to write                           +
/;              'relativelFileName': file                                +
/;               name without path and all of                    +
/;               files save in the folder                                +
/;     'word'                                                                        |
/;--------------------------------------------
*/
void   WriteContentToWordFile(const char* contentText,
        const char* relativelFileName)  
{
 CoInitialize(NULL);

//; basic info prepare for saving file     /
    the data type is special, 'COleVariant'.

 COleVariant   fileName(relativelFileName);   
 COleVariant   FileFormat(VARIANT_FALSE);  
 COleVariant   LockComments(VARIANT_FALSE);  
 COleVariant   Password("");  
 COleVariant   AddToRecentFiles(VARIANT_TRUE);  
 COleVariant   WritePassword("");
 COleVariant   ReadOnlyRecommended(VARIANT_FALSE);  
 COleVariant   EmbedTrueTypeFonts(VARIANT_FALSE);  
 COleVariant   SaveNativePictureFormat(VARIANT_FALSE);  
 COleVariant   SaveFormsData(VARIANT_FALSE);  
 COleVariant   SaveAsAOCELetter(VARIANT_FALSE);

 _variant_t   vOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);  
 _variant_t   vTrue(VARIANT_TRUE);  
 _variant_t   vFalse(VARIANT_FALSE);
    _variant_t   DocumentType(0);
 
    Word::_ApplicationPtr   app;  
 app.CreateInstance("Word.Application");  
 Word::DocumentsPtr   docs;   //;point to all the documents set
 Word::_DocumentPtr   doc;       //;point to a single document
 app->get_Documents(&docs);      //;get the documents set

//; create a new document that is pointed by the pointer 'doc'
 docs->Add (&vOptional, &vOptional, &vOptional, &vOptional, &doc);
 
 Word::SelectionPtr psSel;       //;a pointer to the selected document
    app->get_Selection(&psSel);  //;select the current document
 psSel->TypeParagraph();         //;a new paragraph

//; the text that you want to insert into document        /
 the string data type must be 'BSTR', others will fail.  
 CString lpszText="" ;           //;a common string based on 'char'
 lpszText= contentText;
//; convert string data type.
 BSTR bstrText = _com_util::ConvertStringToBSTR(lpszText); 
    psSel->TypeText(bstrText);      //; Insert text to the document
//; get the directory that save the document that you edited.
 char direText[MAX_PATH]={0};
 ::GetCurrentDirectory(MAX_PATH,direText);
 CString lpszPath = direText;lpszPath+="//word//";
 BSTR bstrPath = _com_util::ConvertStringToBSTR(lpszPath); 
//; get the document and save it
 Word::_DocumentPtr oActiveDoc;      
 app->get_ActiveDocument(&oActiveDoc);
    app->ChangeFileOpenDirectory(bstrPath);
 oActiveDoc->SaveAs(&fileName,&FileFormat,&LockComments,
          &Password,&AddToRecentFiles,
    &WritePassword,&ReadOnlyRecommended,
    &EmbedTrueTypeFonts,&SaveNativePictureFormat,
    &SaveFormsData,&SaveAsAOCELetter);


 app->Quit(&vTrue,&vOptional,&vOptional);
 CoUninitialize();

}

 

使用VC 6.0实现自动生成Word表格 最近在VC6.0 环境下开发一个管理系统,界面开发花了不少功夫却感觉华而不实,自动生成word表格的功能实现了,倒觉得蛮实用的(1)首先,向你的项目中添加word 2003类型库:方法是在MFC ClassWizard中点击按钮Add Class,选择From a type library,在弹出的浏览对话框中,浏览找到office 2003安装路径下的msword.olb文件,例如:"C:/ 阅读详情

相关推荐

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

VC2003中新建一程序,选择项目--》添加类--》MFC--》类型库中的MFC类。 然后选择“文件”单选按钮,默认选择的是“注册表”单选按钮。 从“位置”的“...”按钮(浏览)中选择word安装路径中的MFWORD.OLB文件, 然后在“列表”中就会显示所有的类型,选择需要使用的类型,添加到右侧。 完成后,会把选择的类的头文件添加到你的项目中,这样你就可以使用这些类 操作word

yanzhibo的专栏IlgawME)Y*Ml 1720

使用MSWORD.OLB 组件将 RichTextBox 中的文本保存为 WORD 格式文件。

操作 WORD 文件:使用 MSWORD.OLB 组件将 RichTextBox 中的文本保存为 WORD 格式文件。

利用VC实现Word预览功能

通过VC实现word文档预览功能,即仅让浏览,不让复制、编辑和保存。 总体思路是:先调用office的ole接口,将word文档转换为pdf;再利用swtools将pdf转换为swf;最后利用VC自带的activeX控件shockwaveflash object(flash.ocx)来播放swf。 转换的过程稍微有一点点延迟,最后的浏览效果还是可以的。

weixin_35986813的博客 2084

引入msword

找到解决方法了:不是直接引入mswork.tlh文件的,该文件是#import"C:\\ProgramFiles\\MicrosoftOffice\\Office12\\MSWORD.OLB"后,编译器自动生成的中间文件,但是这样还是会出现命名空间重复的错误,完整的解决方法如下代码 C/C++ code 1 2 3 4 5 6 7 8 ...

341

VS2022报错 VS报错 C2011 class类型重定义 无法打开源文件 MSO.tlh / MSWORD.tlh / VBE6EXT.OLB

VS2022报错 VS报错 C2011 class类型重定义 无法打开源文件 MSO.tlh / MSWORD.tlh / VBE6EXT.OLB

hgggg2003的博客 785

wpsapi.tlh(11) : fatal error C1083: 无法打开包括文件:“”: No such file or directory

环境:cpu64,win7 64操作系统,vs2008,office2013,wps2013个人版 1.由于换了一个笔记本,xp->win7,office2010->2013,wps2012->2013,导致原来的代码不能用了

dragoo1的专栏 3976

WORD2003签名签章插件介绍==wallimn  

WORD2003签名签章插件1.前言  这是我学习ATL的成果,学习过程及程序的编写,前前后后共用了二十多天的时间,花了不少的心血。其间遇到了不少困难,终于都一一解决了。这要感谢www.csdn.net上的热心朋友,从他们的BLOG文章中,我获得了不少灵感。现在这个软件基本完成了,全部实现了我自己定的设计需求,自己觉得这个软件还有一定的用处,就把它的测试版发布一下,希望作用者多提宝贵意见。

ElaineS的专栏 2771

自己写的一个vc操作word例子

<br />//需要初始化一个com对象<br />AfxOleInit();<br /> <br />//这是active控件中添加的方法代码完成将字符串写入到word文档中,然后保存指定文件路径下的文件名,然后退出<br />#include "msword.h"<br />#include <atlbase.h><br />BOOL CWordocx4Ctrl::saveword(LPCTSTR str) <br />{<br /> // TODO: Add your dispatch handler

有梦想,有追求,我可以无所不能 1392

vc++2005 操作word2003

vc++2005 操作word2003 作者:邵盛松 2009年3月21日从解决方案资源管理器或者类视图中添加类,选择添加 TypeLib中的MFC 类。从文件找到office11目录下msword.olb文件,添加所有的类,因为暂时不清都需要添加哪些,所以都添加了。这时候会在项目中添加N多类。CApplication类对应Application对象,获取wordApplication对象,可以控

二分掌柜的 2703

VC中如何保证只有一个WINWORD.EXE在运行

     最近利用VC操作WORD2003总是出现问题:当第一次打开WORD写入数据正常,而不关闭WORD时在利用VC写入WORD数据则发生错误,类似于“……文件已经在别处打开……无法保存”。经过查证,总结得到解决方案如下:HRESULT hr; IDispatch *pDisp; IUnknown *pUnk; //IUnKnown是一个接口。 所有COM接口都继承IUnKnown CLSID clsid; //在Windows系统中也称之为Class ID,缩写为CLSID //此函数

csolay的专栏 1266

VC操作WORD文档总结

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

weixin_30650859的博客 624

c语言读取word文件内容,c 读取word c 读取word文档

c++如何读取word基本步骤(1)创建)一个 MFC 的程序工程。注意:在VC中对WORD进行操作需要在MFC AppWizard - Step 2 of4中的Automaiton选项上打上勾。(2)Ctrl+W 执行 ClassWizard(本文按照 VC6 操作,示例程序是在VC6 下编写测试的)。(3)Add Class...\From a type Library...Office...

weixin_42297727的博客 3976

利用VC操作WORD的用法

        本来是不愿意写东西的我觉的把文档存到机器上时常会不小心弄坏所以干脆放到BLOG上,又可以方便自己以后查找,8错!如果可以顺带帮助到别人就更是我的荣幸了!        本文参考了很多大虾们的文档,如VCK上的杨老师、BLOG-Yingkou,并非有意剽窃!        废话少说,开始吧!        我的机器是IBM R51E,OS为XP Pro,编译器VC6.

cqf539的专栏 1896

VC操作Excel2003,Word2003的两种方式

office:2003及一上版本(开发引入office11,实际使用软件office14) 在工作中很多次遇到需要操作office文件的内容,上网搜索查询资料,查到的大部分都是比较老的资料。大部分资料都是侧重于介绍功能的实现,却详细介绍开始环境的搭建,所以对初学者带来了很多困惑,特别是包含库的过程中经常遇到各种错误,如果同时使用excel,word,ado,那么问题可能更多。所以本文主要是介绍怎

我的博客 449

vc中调用word简单入门

<br />首先,需要了解类型库 <br />  一个类型库是一个提供COM对象功能信息的文件或文件的一部分,而且类型库包含了有关类的信息。注意,类型库并不存储实际的对象,而只是存储有关这些对象的信息。类型库详细说明了一个自动化客户机为对象需要调用的方法和属性的信息,比如说它详细的描述了接受或返回的值。 <br />  每一个Microsoft Office应用程序都在一个dll文件中提供了多种类型库资源,这种dll文件叫做目标库(*.olb),如word2003的目标库是msword.olb其次,如何创建

agwujiang的专栏 1642

VC操作Word书签模板

一 制作模板   1 新建一个文档,设置文档内容。对于循环的部分,建议放到表格内,这样容易定位、选择、复制、粘贴。 2 将鼠标定位到要插入书签的位置,从菜单上,“插入”->“书签,弹出对话框,输入书签名,点击“添加”按钮。 插入以下书签:order_num,报告日期_,报表模板__,name,age,结论__  其中,报表模板__,

除却猩猩不是猿 2981

使用单文档视图结构把Word嵌入到VC程序中(转)

环境;win7 64,vs2008 sp1 一.新建一单文档,复合文档选择容器,同时选中活动文档容器和支持复合文件 未完,待续

dragoo1的专栏 2928
上一篇: 简单的VC 操作XML 文件的的方法
highlandear
博客等级 码龄20年 0粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值