目的:打开excel2003文件并操作
过程:(1)用classwizard导入Excel2000的接口类xl5chs32.olb,生成xl5chs32.h,xl5chs32.cpp
(2)编写代码如下:
#include "xl5chs32.h"
void CExcelDlg::OnButton1()
{ Application app; if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel服务器!");
return;
} app.SetVisible( COleVariant((short)TRUE) ); //使Excel可见 Workbooks books;
//*******************************************************************//
//执行下一句中的app.Workbooks(COleVariant((short)1 ))会提示找不到成员
//问题就是不知道Workbooks的参数是什么?而excel2000的的此函数没有参数啊!
books.AttachDispatch(app.Workbooks(COleVariant((short)1 )).pdispVal,TRUE);
//*******************************************************************//
COleVariant vtNULL((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
books.Open(COleVariant("c:\\客户信息汇总表.xls"),vtNULL,vtNULL,vtNULL,vtNULL,vtNULL,
vtNULL,vtNULL,vtNULL,vtNULL,vtNULL,vtNULL);}哪位大侠指点一下,谢谢!
过程:(1)用classwizard导入Excel2000的接口类xl5chs32.olb,生成xl5chs32.h,xl5chs32.cpp
(2)编写代码如下:
#include "xl5chs32.h"
void CExcelDlg::OnButton1()
{ Application app; if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel服务器!");
return;
} app.SetVisible( COleVariant((short)TRUE) ); //使Excel可见 Workbooks books;
//*******************************************************************//
//执行下一句中的app.Workbooks(COleVariant((short)1 ))会提示找不到成员
//问题就是不知道Workbooks的参数是什么?而excel2000的的此函数没有参数啊!
books.AttachDispatch(app.Workbooks(COleVariant((short)1 )).pdispVal,TRUE);
//*******************************************************************//
COleVariant vtNULL((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
books.Open(COleVariant("c:\\客户信息汇总表.xls"),vtNULL,vtNULL,vtNULL,vtNULL,vtNULL,
vtNULL,vtNULL,vtNULL,vtNULL,vtNULL,vtNULL);}哪位大侠指点一下,谢谢!
1)用classwizard导入Excel2003的接口类xl5chs32.olb
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
// load excel application
if(!app.CreateDispatch(_T("Excel.Application")))
{
throw;
}
// initial status
app.SetUserControl(FALSE);
app.SetDisplayAlerts(FALSE); books.AttachDispatch(app.GetWorkbooks());
book.AttachDispatch(books.Add((_variant_t)(lpFileName)));
sheets.AttachDispatch(book.GetWorksheets());
books.AttachDispatch(app.GetWorkbooks());
//////////////////////////////////
excel2003的接口库xl5chs32.olb,已经没有GetWorkbooks这个接口了,而取而代之的是Workbooks(Variant)接口,我就是不知道其中的参数填写什么合适?,谢谢!
(1)在用classwizard生成的xl5chs32.h,加入接口
VARIANT Workbooks();
(2)xl5chs32.cpp,加入接口实现
VARIANT Application::Workbooks()
{
VARIANT result;
GetProperty(0x23c, VT_VARIANT, (void*)&result);
return result;
}
(3)这样调用时候就不用参数了,就可以实现打开excel文件了
(4)代码如下:
Application app; if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel服务器!");
return;
} app.SetVisible( COleVariant((short)TRUE) ); //使Excel可见 Workbooks books;
///////////////////////////////////////////////
//如下的app.Workbooks()调用时候不在需要参数了
books.AttachDispatch(app.Workbooks().pdispVal,TRUE);
/////////////////////////////////////////////// COleVariant vtNULL((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
books.Open(COleVariant("c:\\客户信息汇总表.xls"),vtNULL,vtNULL,vtNULL,vtNULL,vtNULL,
vtNULL,vtNULL,vtNULL,vtNULL,vtNULL,vtNULL);(5)结论:classwizard生成的接口文件不全。