我以前一直用CStringArray类对EXCEL操作
但现在因为表格格式不定,所以没法做,现在我调用EXCEL的类做,老是报错,代码如下:
_Application objApp;// _application代表了EXCEL服务器
Workbooks objBooks; //workbooks表示整个Excel服务器
Worksheets objSheets; // worksheets表示所有的表单,每个表都可能有很多表单
_Workbook objBook;//_workbook就是一个表,相当于MDI中的一个视窗
_Worksheet objSheet; //_worksheet就表示一个表单,
Range objRange,usedRange; //Range 表示元素的集合
LPDISPATCH lpDisp; //LPDISPATCH就是一个指向excel对象的指针
COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if(!objApp.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel程序,请正确安装!");
return;
}
objApp.m_bAutoRelease = TRUE; //??什么意思?
// objApp.SetVisible(TRUE); //打开Excel程序,没有显示任何数据。
objApp.SetUserControl(TRUE);//允许其它用户控制Excel,否则Excel将一闪即逝
objBooks = objApp.GetWorkbooks();//将一个IDispatch连接附着于COleDispatchDriver对象
char CurrentProgramPath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,CurrentProgramPath);
CString ExcelFilePathName = CurrentProgramPath;//ExcelFilePathName表示excel文件的路径和文件名
ExcelFilePathName += "\\1111.xls";
objBooks.Open(ExcelFilePathName,VOptional, _variant_t(true), VOptional, VOptional, VOptional, VOptional, VOptional,
VOptional, VOptional, VOptional, VOptional, VOptional,VOptional,VOptional);
objBook.AttachDispatch(lpDisp);
objSheets = objBook.GetWorksheets();
//设定当前的工作表sheet
objSheets.AttachDispatch(objBook.GetWorksheets());
lpDisp=objBook.GetActiveSheet();
objSheet.AttachDispatch(lpDisp);
//获得已经使用的行数
usedRange.AttachDispatch(objSheet.GetUsedRange());
objRange.AttachDispatch(usedRange.GetRows());
long iRowNum=objRange.GetCount();//已经使用的行数
objRange.AttachDispatch(objSheet.GetCells());
objRange.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(1)),COleVariant("aa"));
objRange.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(2)),COleVariant("bb"));
objBook.Save();
objBook.Close(VOptional,COleVariant(ExcelFilePathName),VOptional);
objBooks.Close();
objApp.Quit();
走到objSheets = objBook.GetWorksheets();
的时候出错