我把你的程序改了一下,不同的地方你自己比较,这样可以读取正确的单元格的值: CFileDialog   Exceldlg(TRUE,NULL,NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,
"Excel(*.xls) |*.xls||",NULL); 
if(IDOK==Exceldlg.DoModal()) 

m_strFilePath=Exceldlg.GetPathName(); 
// UpdateData(FALSE); COleVariant 
covTrue((short)TRUE), 
covFalse((short)FALSE), 
covOptional((long)DISP_E_PARAMNOTFOUND,   VT_ERROR); _Application   ExcelApp;   
Workbooks   wbsMyBooks;   
_Workbook   wbMyBook;   
Worksheets   wssMysheets;   
_Worksheet   wsMysheet;   
Range   rgMyRge;   
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))   
{   
AfxMessageBox("创建Excel服务失败!");   
exit(1);   
}   wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); 
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(m_strFilePath))); wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);   
  
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet3")),true);   rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);   int   column   =   rgMyRge.GetColumn(); 
int   row         =     rgMyRge.GetRow(); 
VARIANT   tt;
/////////////// 
Range cell;//增加一个对象
cell.AttachDispatch(rgMyRge.GetItem(COleVariant((long)1),COleVariant((long)1)).pdispVal,true); 
tt = cell.GetValue2();//取值
////////////
CString   yy;
yy = tt.bstrVal;
AfxMessageBox(yy);//输出值cell.ReleaseDispatch();
rgMyRge.ReleaseDispatch();   
wsMysheet.ReleaseDispatch();   
wssMysheets.ReleaseDispatch();   
wbMyBook.ReleaseDispatch();   
wbsMyBooks.ReleaseDispatch();   
ExcelApp.ReleaseDispatch();