经过几天的摸索,终于找到了wxWidgets读取Excel数据的方法。
就是一直用 wxAutomationObject对象的 GetObject方法定位到单元格,然后用GetProperty方法取得 "Value "。
代码如下:
if(OpenDlg1-> ShowModal()!=wxID_OK)
return;
wxAutomationObject excelObj,workbook,sheet,cell;
if(!excelObj.CreateInstance( "Excel.Application "))
wxMessageBox( "错误 ", "创建Excel对象失败! ",wxOK);
excelObj.CallMethod( "workbooks.open ",OpenDlg1-> GetPath());
if(!excelObj. GetObject(workbook, "ActiveWorkBook "))
wxMessageBox( "错误 ","创建workbook对象失败! ",wxOK);
wxVariant param1[1];
param1[0]=1L;
if(!workbook. GetObject(sheet, "Sheets ",1,param1)) //打开第一个工作表
wxMessageBox( "错误 ", "创建sheet对象失败 ",wxOK);
wxVariant params[2];
params[0]=1L;
params[1]=3L;
if(!sheet. GetObject(cell, "cells ",2,params)) //选择第一行第三列
wxMessageBox( "创建Cell对象失败! ", "错误 ",wxOK);
wxVariant x1=cell.GetProperty( "Value ");
text1-> SetLabel( "第一行第3列的值为: "+x1.GetString());
excelObj.CallMethod( "close ");
就是一直用 wxAutomationObject对象的 GetObject方法定位到单元格,然后用GetProperty方法取得 "Value "。
代码如下:
if(OpenDlg1-> ShowModal()!=wxID_OK)
return;
wxAutomationObject excelObj,workbook,sheet,cell;
if(!excelObj.CreateInstance( "Excel.Application "))
wxMessageBox( "错误 ", "创建Excel对象失败! ",wxOK);
excelObj.CallMethod( "workbooks.open ",OpenDlg1-> GetPath());
if(!excelObj. GetObject(workbook, "ActiveWorkBook "))
wxMessageBox( "错误 ","创建workbook对象失败! ",wxOK);
wxVariant param1[1];
param1[0]=1L;
if(!workbook. GetObject(sheet, "Sheets ",1,param1)) //打开第一个工作表
wxMessageBox( "错误 ", "创建sheet对象失败 ",wxOK);
wxVariant params[2];
params[0]=1L;
params[1]=3L;
if(!sheet. GetObject(cell, "cells ",2,params)) //选择第一行第三列
wxMessageBox( "创建Cell对象失败! ", "错误 ",wxOK);
wxVariant x1=cell.GetProperty( "Value ");
text1-> SetLabel( "第一行第3列的值为: "+x1.GetString());
excelObj.CallMethod( "close ");