1、MSDN 上的代码,很好的例子 #include "excel8.h " // OLE Variant for Optional. COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); _Application objApp; _Workbook objBook; Workbooks objBooks; Worksheets objSheets; _Worksheet objSheet; Range objRange; VARIANT ret; // Instantiate Excel and open an existing workbook. objApp.CreateDispatch( "Excel.Application "); objBooks = objApp.GetWorkbooks(); objBook = objBooks.Open( "C:\\Test.xls ", VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional); objSheets = objBook.GetWorksheets(); objSheet = objSheets.GetItem(COleVariant((short)1)); //Get the range object for which you wish to retrieve the //data and then retrieve the data (as a variant array, ret). objRange = objSheet.GetRange(COleVariant( "A1 "), COleVariant( "C8 ")); ret = objRange.GetValue(); //Create the SAFEARRAY from the VARIANT ret. COleSafeArray sa(ret); //Determine the array 's dimensions. long lNumRows; long lNumCols; sa.GetUBound(1, &lNumRows); sa.GetUBound(2, &lNumCols); //Display the elements in the SAFEARRAY. long index[2]; VARIANT val; int r, c; TRACE( "Contents of SafeArray\n "); TRACE( "=====================\n\t "); for(c=1;c <=lNumCols;c++) { TRACE( "\t\tCol %d ", c); } TRACE( "\n "); for(r=1;r <=lNumRows;r++) { TRACE( "Row %d ", r); for(c=1;c <=lNumCols;c++) { index[0]=r; index[1]=c; sa.GetElement(index, &val); switch(val.vt) { case VT_R8: { TRACE( "\t\t%1.2f ", val.dblVal); break; } case VT_BSTR: { TRACE( "\t\t%s ",(CString)val.bstrVal); break; } case VT_EMPTY: { TRACE( "\t\t "); break; } } } TRACE( "\n "); } //Close the workbook without saving changes //and quit Microsoft Excel. objBook.Close(COleVariant((short)FALSE), VOptional, VOptional); objA...