Office 自动化---准备

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++。这其中走过不少弯路,但最后还是慢慢的掌握了这些开发技术。

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

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值