Dear all:
  我在网上找了一个读写Excel的例子,代码如下,其中有两处报错的地方,请大家帮忙看看!感激不尽!!!!!!!
我用的是Excel2003,这个是一个2000的例子!         Range range;
Range usedRange;
COleVariant
        covTrue((short)TRUE),
        covFalse((short)FALSE),
        covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); if(!exlapp.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel服务器!");
return;
}
exlapp.SetVisible(TRUE);//使Excel可见
exlapp.SetUserControl(TRUE);//允许其它用户控制Excel,否则Excel将一闪即逝.

//Open an excel file
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = path;
strPath += "\\ABC";

wbks.AttachDispatch(exlapp.GetWorkbooks());

lpDisp=wbks.Open(strPath,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);
wbk.AttachDispatch(lpDisp);
whts.AttachDispatch(wbk.GetWorksheets());
lpDisp=wbk.GetActiveSheet();
wht.AttachDispatch(lpDisp);
//读取一个单元格的值
range.AttachDispatch(wht.GetCells()); 
range.AttachDispatch(range.GetItem (COleVariant((long)2),COleVariant((long)2)).pdispVal);
COleVariant vResult =range.GetValue(); //这里报错一 CString str;
if(vResult.vt == VT_BSTR)       //字符串
{
str=vResult.bstrVal;
}
else if (vResult.vt==VT_R8)     //8字节的数字 
{
str.Format("%f",vResult.dblVal);
}
else if(vResult.vt==VT_EMPTY)   //单元格空的
{
str="";
}  
else if(vResult.vt==VT_DATE)    //时间格式
{
SYSTEMTIME st;
VariantTimeToSystemTime(&vResult.date, &st);//这里报错二,说类型不对
}error C2660: 'GetValue' : function does not take 0 parameters
error C2664:  VariantTimeToSystemTime' : cannot convert parameter 1 from 'double *' to 'double'
GetValue函数的定义如下:
VARIANT Range::GetValue(const VARIANT& RangeValueDataType)
{
VARIANT result;
static BYTE parms[] =
VTS_VARIANT;
InvokeHelper(0x6, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, parms,
&RangeValueDataType);
return result;
}