Office 自动化---准备

来源:互联网 发布:8口网络交换机怎么连接 编辑:程序博客网 时间:2024/06/05 17:13

Office 自动化---准备

引言

笔者在使用C++编写Word和Excel导出报告的时候,由于网上相应的资料很少,所以走了许多弯路。在自己探索尝试了之后,积累一些开发的经验,写成这个系列的博文。

这里我们大部分都是Ole形式的开发,之后会介绍一些第三方库,比如libxl。


一、在VS中引入Office库

这个我还是用截图来说明,相信这样更加直观一点。

1

.

2

.

3

.

这里稍作说明:我们选从文件中导入,一般去Office的安装目录下找

D:\\ProgramFiles\Microsoft Office(笔者将office安装了D盘,可能大多数人选择的是C盘)

这个目录下会几个不同版本的文件夹

比如office11、office12、office14等,其中office11是office2003;office12是office2007;而office14便是office2010。

在进入这些目录,我们主要是开发word和excel。所以如果你要开发word就导入MSWORD.OLB;如果要开发Excel就导入EXCEL.EXE。

然后我们这里导入的几个类似:

_Application、_Document、Documents和Selection

 

在导入这些类之后后,会新加入一些头文件,在这些头文件中进行一下修改

#import "D:\\ProgramFiles\\Microsoft Office\\Office14\\MSWORD.OLB" no_namespace
替换成

#import "D:\\ProgramFiles\\Microsoft Office\\Office14\\MSWORD.OLB" no_namespaceraw_interfaces_only \    rename("FindText","_FindText") \    rename("Rectangle","_Rectangle") \    rename("ExitWindows","_ExitWindows") \    rename("FontNames","_FontNames")

二、简单的例子

try    {        //////////////////////////////////////////////////////////////////////////        //初始化Word        COleVariant vTrue((short)TRUE);        COleVariant vFalse((short)FALSE);        COleVariant vOpt((long)DISP_E_PARAMNOTFOUND,  VT_ERROR);        CApplicationWd10 app;        if(!app.CreateDispatch(_T("Word.Application")))   //启动Word        {            return;        }        app.put_Visible(false);        app.m_bAutoRelease = TRUE;        CDocumentsWd10 docs =app.get_Documents();        CDocumentWd10 doc =docs.Add((COleVariant)L"",vOpt,vOpt,vOpt);        CSelectionWd10 sel =app.get_Selection();        //////////////////////////////////////////////////////////////////////////        //写内容        sel.TypeText(L"HelloWorld!!!!!");        //////////////////////////////////////////////////////////////////////////        //保存    doc.SaveAs(COleVariant(L"D:\\hello_world.docx"),vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);        //////////////////////////////////////////////////////////////////////////        //释放        sel.ReleaseDispatch();   //释放selection对象        doc.Close(vFalse,vOpt,vOpt);        doc.ReleaseDispatch();         docs.ReleaseDispatch();        app.Quit(vOpt,vOpt,vOpt);        app.ReleaseDispatch();         //        MessageBox(L"导出成功");    }    catch(COleDispatchException*e)    {     }    catch(CException* e)    {    } 

//说明:这里出现的一些函数和类的介绍会放在后面的篇章中。

三、总结

在用C++开发Office报告导出功能的时候,网上有的也都是VB这些,偶尔还会有C#的,就唯独C++的资料特别少。

在一开始学习的时候,还真的只能慢慢摸索,在Word或者Excel中录制宏,然后开这些Vb代码,转换到C++。这其中走过不少弯路,但最后还是慢慢的掌握了这些开发技术。

所以这里专门做一个系列,帮助正在苦恼者;也自己做一个总结。

原创粉丝点击