COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
sheets.AttachDispatch(book.get_Sheets());//获得工作簿中的sheets的容器
sheet.AttachDispatch(sheets.get_Item(COleVariant((short)1)));//获得第一个sheet
//获得sheet指定区域
//得到区域的行数
long lgUsedRowNum=0;
range.AttachDispatch(sheet.get_UsedRange(),true);
range.AttachDispatch(range.get_Rows(),true);
lgUsedRowNum=range.get_Count();
//得到区域的列数
long lgUsedColumnNum=0;
range.AttachDispatch(range.get_Columns(),true);
lgUsedColumnNum=range.get_Count();
//得到全部的Cells
range.AttachDispatch(sheet.get_Cells(),true);
sheet.ReleaseDispatch();
lpDisp=sheets.Add(vtMissing,vtMissing,_variant_t((long)1),vtMissing);
sheet.AttachDispatch(lpDisp);
sheet.put_Name(_T("提取"));
//遍历整个Excel表格
long cux=0;
long cuy=0;
int temcux=0;
int ColumnNum=0;
int RowNum=0;
CRange newCell;
for(int i=3;i<=lgUsedRowNum;i++)
{
// for(int j=1;j<=lgUsedColumnNum;j++)
//{
newCell.AttachDispatch(range.get_Item(COleVariant((long)i),COleVariant((long)1)).pdispVal,true);
VARIANT varItemName=newCell.get_Text();
CString strItemName; //第i行第j列的元素值
strItemName=varItemName.bstrVal;//获得当前单元格的元素
if(strItemName.GetLength()>10) //车次行
{
// cux=temcux+abs(RowNum-ColumnNum);
//ColumnNum=0;
//RowNum=0;
//**********************
DWORD dwNum=WideCharToMultiByte(CP_OEMCP,NULL,strItemName,-1,NULL,0,NULL,FALSE);
char *sde;
sde=new char[dwNum];
WideCharToMultiByte(CP_OEMCP,NULL,strItemName,-1,sde,dwNum,NULL,FALSE);
int pos = 0;
char seps[] = " ";
char *token;
token = strtok( sde, seps );
int k=0;
while( token != NULL )
{
k++;
if(k==1)
{
CString de;
de=token;
COleVariant new_value(de);
CRange start_range = sheet.get_Range(COleVariant(_T("A1")), covOptional);
CRange write_range = start_range.get_Offset(COleVariant((long)cux), COleVariant((long)0));
write_range.put_Value2(new_value);
start_range.ReleaseDispatch();
write_range.ReleaseDispatch();
}
else if(k==7)
{
}
else if(k==9)
{
}
token = strtok( NULL, seps );
if(token == NULL)
{
cux++;
// break;
}
}
//strSrc.ReleaseBuffer();
//***********************
导入数据库代码
<pre name="code" class="cpp">
char *date=NULL;//日期
char *car=NULL;//车次
char *car_station=NULL;//车站
char *start_time=NULL; //开车时间
char *stop_time=NULL;//到站时间
int down_Num;//下站人数
int up_Num;//上站人数
char *whether;//天气
CString FN;//文件名
FN=files[i].c_str();
FN=FN.Mid(8,8); //CString 转string
whether="无";
CRange newCell;
for(int i=1;i<=lgUsedRowNum;i++)
{
for(int j=1;j<=lgUsedColumnNum;j++)
{
newCell.AttachDispatch(range.get_Item(COleVariant((long)i),COleVariant((long)j)).pdispVal,true);
VARIANT varItemName=newCell.get_Text();
CString strItemName; //第i行第j列的元素值
strItemName=varItemName.bstrVal;//获得当前单元格的元素
DWORD dwNum=WideCharToMultiByte(CP_OEMCP,NULL,FN,-1,NULL,0,NULL,FALSE);
date=new char[dwNum];
WideCharToMultiByte(CP_OEMCP,NULL,FN,-1,date,dwNum,NULL,FALSE);
if(strItemName==_T("数据源"))
{
break;
}
if(j==1&&strItemName.GetLength()<4&&strItemName.GetLength()>0&&strItemName!=_T("数据源"))
{
DWORD dwNum1=WideCharToMultiByte(CP_OEMCP,NULL,strItemName,-1,NULL,0,NULL,FALSE);
car=new char[dwNum1];
WideCharToMultiByte(CP_OEMCP,NULL,strItemName,-1,car,dwNum1,NULL,FALSE);
break;
}
else if(j==1&&strItemName==_T(""))
{
break;
}
else if(j==1&&strItemName!=_T("")&&strItemName.GetLength()!=3&&strItemName!=_T("数据源"))
{
DWORD dwNum1=WideCharToMultiByte(CP_OEMCP,NULL,strItemName,-1,NULL,0,NULL,FALSE);
car_station=new char[dwNum1];
WideCharToMultiByte(CP_OEMCP,NULL,strItemName,-1,car_station,dwNum1,NULL,FALSE);
continue;
}
else if(j==2)
{
if(strItemName.GetLength()==0)
{
strItemName=_T("0");
}
}
else if(j==3)
{
}
else if(j==4)
{
}
else if(j==5)
{
if(strItemName.GetLength()==0)
{
strItemName=_T("0");
}
up_Num=_ttoi(strItemName);
break;
}
}
if(car_station!=NULL)
{
dd.Add(date,car,car_station,stop_time,start_time,down_Num,up_Num,whether);
car_station=NULL;
}
}