VC++6.0中操作Excel2003

来源:互联网 发布:怎么链接淘宝店铺宝贝 编辑:程序博客网 时间:2024/05/17 02:31

 1.和操作其他版本Excel不同的是在new class选择文件时,应该选择office2003安装目录下的Excel.exe文件.

2.应该根据自己的需要对导入的Excel类型进行封装,以方便自己调用.

3.由于调用的其实是组件,应此一些函数的入口必须使用COleVariant()或者_variant_t来对输入参数进行转换,例如:

//切换当前工作表

int CurSheet = 1;

CComVariant vIndex(long(const(CurSheet)));
 m_Sheet.AttachDispatch(m_Sheets.GetItem(vIndex));

并且在输入参数为空时需要如下进行处理:

CComVariant vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);   

m_Workbook.Close(vOpt,vOpt,vOpt);

4.Excel释放时,需要一级一级的进行例如:

  CComVariant vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);   
  //m_Workbook.Close(vOpt,vOpt,vOpt);

  m_RowRange.ReleaseDispatch();
  m_ColRange.ReleaseDispatch();
  m_Range.ReleaseDispatch();

  m_Sheet.ReleaseDispatch();
  m_Workbook.ReleaseDispatch();

  m_Workbooks.ReleaseDispatch();
  m_Sheets.ReleaseDispatch();

  m_ExcelApp.Quit();//.ReleaseDispatch();
  m_bOpened = FALSE;

但是有疑问的是,如果此时第二行没有被屏蔽,那么执行时会死在这里.如果屏蔽掉也可以正常的释放掉Excel.那么到底是否释放需要调用呢?