VS2012下C++操作word(整理)
2016-01-15 21:05
561 查看
参考:http://bbs.csdn.net/topics/300141389
http://blog.csdn.net/hhhh63/article/details/7652696
最近做的东西要用C++来操作office word,生成一个表格,找资料找了好久才弄明白,记一下~~
1.建一个基于对话框的MFC,可以参考( http://blog.csdn.net/hhhh63/article/details/7652696)
2.添加类库 C:\Program Files\Microsoft Office\OFFICE11\msword.olb ;
3. 注释掉新生成的.h文件里边有//#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB" no_namespace
并添加代码#include<afxdisp.h>且放在所有Include的最前面
4.然后就可以用相应函数操作word了,我是添加了一个button,添加点击事件,操作word.
(以下代码来自http://bbs.csdn.net/topics/300141389)
整个工程已上传http://download.csdn.net/detail/anqier0468/9405961
http://blog.csdn.net/hhhh63/article/details/7652696
最近做的东西要用C++来操作office word,生成一个表格,找资料找了好久才弄明白,记一下~~
1.建一个基于对话框的MFC,可以参考( http://blog.csdn.net/hhhh63/article/details/7652696)
2.添加类库 C:\Program Files\Microsoft Office\OFFICE11\msword.olb ;
3. 注释掉新生成的.h文件里边有//#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB" no_namespace
并添加代码#include<afxdisp.h>且放在所有Include的最前面
4.然后就可以用相应函数操作word了,我是添加了一个button,添加点击事件,操作word.
(以下代码来自http://bbs.csdn.net/topics/300141389)
void CMFCApplication2Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 //CApplication TestWordDoc; //定义一个WORD的应用对象 CApplication TestWordDoc; if(!TestWordDoc.CreateDispatch(_T("Word.Application"))) //启动WORD { AfxMessageBox(_T("居然你连OFFICE都没有安装吗?")); return; } AfxMessageBox(_T("WORD 已经运行启动啦,你可以用Ctrl+Alt+Del查看")); TestWordDoc.put_Visible(VARIANT_TRUE); //设置word可见,对应office2003的msword.olb //TestWordDoc.SetVisible(TRUE); //设置WORD可见。对应老版本msword.olb //当然,如果你想要悄悄地调用WORD的功能,则注释掉这条语句 AfxMessageBox(_T("看好了,就要新建一个空白文档了")); //通过WORD宏可以知道,由于要使用Documents,于是我们定义一个并从TestWordDoc中取得 CDocuments docs=TestWordDoc.get_Documents(); //准备调用Documents::Add函数了,需要定义4个参数。 //从WORD宏可以看出来3个参数的类型为: //Template字符,NewTemplate布尔,DocumentType数值 //但Add函数还需要一个参数是Visible,傻子也能看出来这个值表示是否显示出新文档 //并且可以给默认值(VT_EMPTY) CComVariant Template(_T("")); //为了简单,没有使用WORD的文档模板 CComVariant NewTemplate(false),DocumentType(0),Visible; docs.Add(&Template,&NewTemplate,&DocumentType,&Visible); AfxMessageBox(_T("下面,程序要向WORD发送字符啦")); //通过WORD宏可以知道,由于要使用Selection,于是我们定义一个并从app中取得 //Selection表示输入点,即光标闪烁的那个地方 CSelection sel=TestWordDoc.get_Selection(); //调用函数Selection::TypeText 向WORD发送字符 sel.TypeText(_T("HELLO\r\n大家好呀")); sel.TypeParagraph(); sel.TypeParagraph(); sel.TypeText(TEXT("lasdflj")); AfxMessageBox(_T("WORD准备要退出啦")); //以下一段是不用#include <AtlBase.h>时退出要做的。如果用#include <AtlBase.h>就不用了。 //VARIANT SaveChanges,OriginalFormat,RouteDocument; //定义调用QUIT时使用的参数 //SaveChanges.vt=VT_BOOL; //设置退出WORD时候的保存参数 //SaveChanges.boolVal=VARIANT_FALSE; //为不保存任何文档,模板及设置 //::VariantInit(&OriginalFormat); //清空变量 //RouteDocument.vt=VT_EMPTY; //清空变量的另一种方法 //准备调用_Application::Quit函数了,需要定义3个参数。 //但是,这次我们使用CComVariant,这是一个模板类。 //在定义的时候直接调用带参数的构造函数,比VARIANT使用简单多了吧 CComVariant SaveChanges(false),OriginalFormat,RouteDocument; //使用 CComVariant 的不带参数的构造函数,默认就是使用VT_EMPTY,设置为空类型 //另外,除了CComVariant,你还可以使用COleVariant和_variant_t,但我个人最喜欢前者 //调用Quit退出WORD应用程序。当然不调用也可以,那样的话WORD还在运行着那 TestWordDoc.Quit(&SaveChanges,&OriginalFormat,&RouteDocument); TestWordDoc.ReleaseDispatch(); //释放对象指针。切记,必须调用 }
整个工程已上传http://download.csdn.net/detail/anqier0468/9405961
相关文章推荐
- 当C++指向对象的指针被赋值为NULL,对象那些函数可以运行?
- C++:重载函数1(和与连接)
- C++创建二叉树(一)
- C++:友元3(复数的加法)
- C++之路进阶——树链剖分/块状树(树的统计)
- C语言 calloc, malloc, realloc ,alloca以及 free的用法
- Windows 下使用命令行编译C/C++文件
- 定点数的表示
- 用editplus+gcc搭建C语言开发环境
- 中缀表达式
- 关于二维数组的翻转与旋转 低端实现
- 任务接口设计
- 头文件标准格式
- Atitit.java jna 调用c++ dll 的总结
- Atitit.java jna 调用c++ dll 的总结
- Atitit.java jna 调用c++ dll 的总结
- C++学习之const详解篇
- C++ 中 const 使用
- 修练8年C++面向对象程序设计之体会
- 修练8年C++面向对象程序设计之体会