zoukankan      html  css  js  c++  java
  • Excel数据提取C++代码(仅供参考)

           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;
    			  
    		   }
         }
    	 
        


    
    
  • 相关阅读:
    环形数组求最大子数组
    教学楼电梯调度需求分析
    结对编程实践扩展
    《梦断代码》读书笔记
    CS小分队第二阶段冲刺站立会议(5月30日)
    CS小分队第二阶段冲刺站立会议(5月29日)
    CS小分队第二阶段冲刺站立会议(5月28日)
    第一阶段冲刺个人总结
    CS小分队第二阶段冲刺站立会议(5月27日)
    CS小分队第二阶段冲刺站立会议(5月26日)
  • 原文地址:https://www.cnblogs.com/zztong/p/6695275.html
Copyright © 2011-2022 走看看