//开释Dispatch Range range; hr = pUnk->QueryInterface(IID_IDispatch, (void **)&pRunDisp); } Worksheets sheets; range.AttachDispatch(range.GetRows()); book.ReleaseDispatch (); { row_num=range.GetCount(); Range iCell; sheets.ReleaseDispatch ();
return RTERROR; MessageBox(NULL,"初始化COM支持库失败!\n无法节制Excel!", \ range.AttachDispatch(sheet.GetUsedRange()); ::Sleep(10); CString cstr; iCell.ReleaseDispatch (); CString SheetName=sheet.GetName(); range.ReleaseDispatch (); {
假如要输出到Excel的话,要害函数就是: lpDisp=app.GetActiveSheet(); ads_printf("\n表格%s共%d行,%d列",SheetName,row_num,col_num); return RTERROR; _Workbook book; IDispatch *pRunDisp = NULL; ::MessageBox(NULL, "没有发明Excel!", "TrueTable", MB_ICONHAND); sheet.AttachDispatch(lpDisp); } if (!pRunDisp) else sheet.ReleaseDispatch ();
//读取sheet名 //读写数据了 那绝对会起到事半功倍的结果。跟着Automation编程技能的呈现,我们可以很利便地实现这一点了,下面是个 iCell.SetItem(COleVariant(i),COleVariant(j),COleVariant(cstr));
//获适当前活泼sheet covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); int DynamicReadFromExcel() covTrue((short)TRUE), covFalse((short)FALSE), app.AttachDispatch (pRunDisp); 在现实的事变中,我们常常要对一些表格数据举办处理赏罚,天圆液压缸筒,假如先把这些表格数据通过Excel处理赏罚,再导入到AutoCAD, { //常用变量界说 MessageBox(NULL,"\n当前表格没稀有据!", \ books.ReleaseDispatch ();
//已经行使地区的起始行、列: app.ReleaseDispatch (); //获得所有Cells,此时,range是cells的荟萃 }
ObjectARX的例子,大缸筒加工,其成果是动态关联Excel,然后读取其数据,并将这些数据打印在文本域中。
//动态从Excel读取数据 range.AttachDispatch(sheet.GetUsedRange()); long StartRow=range.GetRow(); //起始行 return RTERROR; { app.ReleaseDispatch ();
if (pUnk) pUnk->Release(); if(SUCCEEDED(hr)) //假若有单位格正处于编辑状态中,此操纵不能返回,会一向守候 break; ads_printf("\n"); //ads_printf("\n%s",SheetName); IUnknown *pUnk = NULL; ads_printf("\n"); //关联已经运行的Excel实例 { for(long i=1;i<=5;i++) //做5次实行 }
{ { { iCell.AttachDispatch(range.GetItem (COleVariant(i),COleVariant(j)).pdispVal ); range.AttachDispatch(sheet.GetCells()); return RTNORM;
//回收MFC方法初始化COM库,措施竣事时COM库会自动开释 } HRESULT hr = GetActiveObject(clsid, NULL, (IUnknown**)&pUnk); if(lpDisp==NULL) range.AttachDispatch(sheet.GetUsedRange()); vResult =iCell.GetText(); CLSIDFromProgID(L"Excel.Application", &clsid); if(col_num<2 && row_num<2) //此sheet为空 { //读取单位格文本 range.AttachDispatch(range.GetColumns()); //已经行使的列数: app.ReleaseDispatch (); if(!AfxOleInit()) long row_num; cstr=vResult.bstrVal; //关联Excel COleVariant vResult; for(long i=StartRow;i<StartRow+row_num;i++)
return RTERROR; } Workbooks books; ads_printf("%s ",(LPTSTR)cstr); "TrueTable",MB_IConERROR | MB_OK); col_num=range.GetCount();
} COleVariant } _Worksheet sheet; { } for(long j=StartCol;j<StartCol+col_num;j++) _Application app; "TrueTable",MB_IConERROR | MB_OK); MessageBox(NULL, "没有发明有用的表格!", \ //已经行使的行数: long StartCol=range.GetColumn(); //起始列 CLSID clsid;
LPDISPATCH lpDisp; } "TrueTable",MB_IConERROR | MB_OK); //写单位格文本 long col_num;
(责任编辑:admin) |