利用active控件读取excel文件中单元格的值并返回

来源:互联网 发布:proxifier linux 安装 编辑:程序博客网 时间:2024/06/08 02:38

#include "excel.h"
BSTR CTestExcel1Ctrl::wordget()
{
   _Application app;
 Workbooks books;//创建一个工作簿集合对象
 _Workbook book; //创建一个工作簿
 Worksheets sheets;//创建一个工作表集合对象
 _Worksheet sheet;//创建一个工作表
 Range range; //创建一个单元格对象 
 LPDISPATCH lpDisp;//接口指针
 COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
 if(!app.CreateDispatch("Excel.Application"))//启动excel程序
 {
   return NULL;//无法启动excel程序,返回NULL
 }
    books=app.GetWorkbooks();//获得工作簿集合对象
 /*
       LPDISPATCH Open(
  LPCTSTR Filename, const VARIANT& UpdateLinks, const VARIANT& ReadOnly, const VARIANT& Format,
  const VARIANT& Password, const VARIANT& WriteResPassword, const VARIANT& IgnoreReadOnlyRecommended, const VARIANT& Origin,
  const VARIANT& Delimiter, const VARIANT& Editable, const VARIANT& Notify, const VARIANT& Converter,
  const VARIANT& AddToMru, const VARIANT& Local, const VARIANT& CorruptLoad);
     */
 //打开excel并获得excel对象指针
 lpDisp=books.Open(
  "d://excel.xls",covOptional,covOptional,covOptional,
  covOptional,covOptional,covOptional,covOptional,
  covOptional,covOptional,covOptional,covOptional,
  covOptional,covOptional,covOptional);
   
 book.AttachDispatch(lpDisp);//Attach the IDispatch pointer to the Workbook object.
 sheets=book.GetSheets();//获得工作表集合对象
 sheet=sheets.GetItem(COleVariant((short)1));//获得工作表对象
 range=sheet.GetRange(COleVariant("A1"),COleVariant("A1"));//获得单元格对象
 COleVariant rValue;
 rValue=COleVariant(range.GetValue2());//获得单元格对象值
    //实现COleVariant类型转换成BSTR类型
 rValue.ChangeType(VT_BSTR);
    BSTR bValue=rValue.bstrVal;
    //设置工作簿的保存状态
 book.SetSaved(TRUE);
 //释放资源
 if(books)
  books.ReleaseDispatch();
 if(book)
  book.ReleaseDispatch();
 if(sheets)
  sheets.ReleaseDispatch();
 if(sheet)
  sheet.ReleaseDispatch();
 if(range)
  range.ReleaseDispatch();
 if(app)
  app.ReleaseDispatch();
 return bValue;
}

原创粉丝点击