vc操作excel:[1]初始化连接、创建和写入

  1. 新建MFC工程,工程名为 3 。在选择From a type library时,选择Microsoft Office安装目录下的office11文件夹,将文件过滤器改为 所有文件,找到excel.exe文件,确定,按shift添加所有的类。(这里有疑问,可参见我的上一篇经验“vc操作word:[1]初始化连接、创建和写入。按:本来想写成系列经验的,奈何百度经验这几天出问题了)

     

    vc操作excel:[1]初始化连接、创建和写入
    vc操作excel:[1]初始化连接、创建和写入
  2.  

    先初始化COM库,在CMy3App类的InitInstance函数中,加入以下代码:

     

    if(CoInitialize(NULL)!=S_OK)

    {

    AfxMessageBox("Fail");

    return FALSE;

    }

     

    vc操作excel:[1]初始化连接、创建和写入
  3.  

    新建一个类型为Generic Class的类,命名为CMeExcel

    vc操作excel:[1]初始化连接、创建和写入
  4.  

    在文件视图区打开MeExcel.h文件,如图所示,加入以下代码:

    //头文件

    #include"comdef.h"

    #include"atlbase.h"

    #include"excel.h"

    以及

    //变量申明和函数定义

    _Application m_exApp;   //Application

    _Workbook m_exBook;   //表格,单数

    Workbooks m_exBooks;  //表格,复数

    _Worksheet m_exSheet;  //表单

    Worksheets m_exSheets;

    Range m_exRange;           //类似于单元格

     

    BOOL CreateApplication();

    BOOL CreateWorksheet();

    BOOL SetItem();

     

    vc操作excel:[1]初始化连接、创建和写入
  5.  

    打开MeExcel.cpp文件,如图加入以下代码:

    BOOL CMeExcel::CreateWorksheet()

    {

    m_exBooks.AttachDispatch(m_exApp.GetWorkbooks());

    m_exBook.AttachDispatch(m_exBooks.Add(_variant_t("")));

     

    m_exSheets.AttachDispatch(m_exBook.GetWorksheets());

    m_exSheet.AttachDispatch(m_exSheets.GetItem(_variant_t("sheet1")));

    return TRUE;

    }

     

    BOOL CMeExcel::SetItem()

    {

    m_exRange.AttachDispatch(m_exSheet.GetCells());

    m_exRange.SetItem(_variant_t((long)6),_variant_t((long)4),_variant_t("Hello"));

    return FALSE;

    }

    //参照,word文档建立的方法,会对它有更深刻的理解

    vc操作excel:[1]初始化连接、创建和写入
  6.  

    现在开始调用类函数,创建excel表格,并写入数据。只需在对话框中添加成员变量 CMeExcel m_meExcel,在对话框初始化函数中加入以下代码:

    m_meExcel.CreateApplication();

    m_meExcel.CreateWorksheet();

    m_meExcel.SetItem();

     

    vc操作excel:[1]初始化连接、创建和写入
    vc操作excel:[1]初始化连接、创建和写入
  7.  

    点击运行。在第三行第五列显示”Hello“。也就是运行m_meExcel.SetItem();函数的结果。

     

    vc操作excel:[1]初始化连接、创建和写入
  8.  

    补充:在第一次编译运行的时候,出现...\vc98\atl\include\atlbase.h(4497) : error C2660: 'VarCmp' : function does not take 3 parameters的错误,打开atlbase.h文件,果断看不懂,按字面意思的理解,VarCmp函数不带3个参数。在网上找资料,彻底被误导了。打开MSDN,查找VarCmp,好吧,我承认技术不行看不懂,但是它说,总共有4个参数,当最后一个参数为1的时候,Ignore case,忽视的情况,不管,直接传个 1 进去。编译成功!

    vc操作excel:[1]初始化连接、创建和写入
    vc操作excel:[1]初始化连接、创建和写入
posted @ 2016-12-25 15:25  一天从晚上开始  阅读(1583)  评论(0编辑  收藏  举报