您的位置:首页 > 编程语言 > C语言/C++

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)

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

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: