DELPPHI 通过ADO读取EXCEL

来源:互联网 发布:理财风险数据 编辑:程序博客网 时间:2024/06/13 06:59

 uses ComObj;


   try
      ExcelApp := CreateOleObject( 'Excel.Application' );
      ExcelApp.visible:=False;
      ExcelApp.Workbooks.Open(Trim(edt1.Text));//创建COMOBJ对象,并且打开指定文件
   except
      ShowMessage('打开Excel文件出错,请检查文件是否损坏 或者 系统是否安装了 Microsoft Excel!');
      exit;
   end;

  try
    ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=' + Trim(edt1.Text) + ';Extended Properties=Excel 8.0';//设置ADO连接参数,此时并未打开连接
    sheetname:= TStringList.Create;
    for i:=1 to ExcelApp.WorkBooks[1].Worksheets.Count do //一个EXCEL有多页情况,必须循环多次来查询
    sheetname.Add(ExcelApp.WorkBooks[1].Worksheets[i].Name);
   finally
      ExcelApp.WorkBooks.Close;
      ExcelApp.Quit;
      ExcelApp:=Unassigned;
   end;                              

  //这一段其实就是为了得到指定EXCEL文件的各个分页名,而且必须在ADO连接前释放COMOBJ对象,因为ExcelApp正在打开 指定文件(独占方式),,ADO等会也会打开会产生冲突

      try
        ERRcount:=0;
        SUCcount:=0;
        for i:=0 to sheetname.count-1 do
        begin
          try
            adoquery1.close;
            adoquery1.SQL.Text := 'Select distinct  列名1 from [' + SheetName[i] + '$]';/页名右边
            adoquery1.Open;
            if adoquery1.RecordCount > 0 then
            begin
              pb2.Max := adoquery1.RecordCount;
              pb2.Position :=0;
              adoquery1.First;
              adoquery1.DisableControls;
              while not adoquery1.Eof do
              begin
                mobile := trim(adoquery1.fields[0].asstring);//此示例中仅为了获取第一列(列名1)

                mbtype := GetMobileType(addphonestr(mobile));
                if mbtype <> -1 then
                begin
                  new(psendData);
                  psendData^.ssubItems := nil;
                  psendData^.sCaption := addphonestr(mobile);
                  psendData^.mbtype := 1 + mbtype; //-1错号,01小灵通,23手机
                  sendfilelist.Add(psendData);
                end;
                  adoquery1.Next;
              end;
            end;
            SUCcount:=SUCcount+1;//纪录成功加载的页数
          except
            ERRcount:=ERRcount+1;//纪录加载失败的页数
          end;
        end;
    finally
      sheetname.Free;
      ADOConnection1.Close;
    end; 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝50多天鼻塞怎么办 50多天孩子咳嗽怎么办 2岁宝宝伤风鼻塞怎么办 2个月伤风鼻塞怎么办 3个月宝宝鼻塞怎么办 感冒治好后咳嗽一直不好怎么办 天气太热感冒了怎么办 3个月的婴儿鼻塞怎么办 四个月宝宝感冒鼻塞严重怎么办 4个月小孩鼻塞怎么办 4个多月的宝宝流鼻涕怎么办 4个月大的宝宝流鼻涕怎么办 两岁宝宝着凉了怎么办 7岁儿童晚上鼻塞怎么办 儿童感冒鼻塞怎么办速效办法 7岁儿童感冒鼻塞怎么办 七个月婴儿感冒流鼻涕怎么办 婴儿感冒流鼻涕怎么办速效办法 三个月婴儿感冒咳嗽流鼻涕怎么办 五个月婴儿感冒咳嗽流鼻涕怎么办 两个多月的宝宝鼻塞怎么办 3个月宝宝感冒鼻塞怎么办 2个月宝宝感冒鼻塞怎么办 5个月宝宝鼻塞怎么办 6个月宝宝鼻塞怎么办 3个月婴儿感冒咳嗽怎么办 感冒打喷嚏打不出来怎么办 4岁宝宝体温37.5怎么办 8个月的宝宝鼻塞怎么办 4个月婴儿鼻塞怎么办 我一躺下就鼻塞怎么办 感冒了鼻子堵了怎么办 感冒鼻涕流的多怎么办 小孩感冒鼻塞怎么办最简单方法 鼻子痒老打喷嚏流鼻涕怎么办 眼睛红痒鼻子流鼻涕怎么办 19个月宝宝流鼻血怎么办 9个月宝宝流鼻血怎么办 8个月宝宝流鼻血怎么办 4个月宝宝流鼻血怎么办 20个月宝宝发烧流鼻血怎么办