给出一个Excel,如何读出Excel的数据(行,列数未知),要求一行一行的读,因为要对数据分析,并把读出所有数据到文本文件。
关键是如何读出Excel的数据。谢谢高手!

解决方案 »

  1.   

    不一定一定要一行一行的读,可以一次读到表里。
    然后
    query1.first
    while not query1.eof do
    begin
     处理
     query1.next;
    end;
      

  2.   

    可以用ODBC 数据源连接Excel文件,接下来如楼上代码 跟操作普通数据表一样
      

  3.   

    可以定义Variant类型的变量,用来读取Excel中的值!
    MyExcel,MyWorkBook,MyWorkSheet: Variant;
    MyExcel:= CreateOleObject('Excel.Application');
    MyWorkBook:= MyExcel.WorkBooks.Add;
    MyWorkSheet:= MyExcel.WorkSheets['Sheet'];
      

  4.   

    读取数据的问题我也试了很久,不过最后解决了.
    vValue:=VarToStr(ExlApp.ActiveSheet.Cells[Row,Col]);
      

  5.   

    用ado,参考
    procedure TForm1.Button3Click(Sender: TObject);
    var
      I,J : integer;
      MyList: TStringList;
    begin
      try
        MyList:=TStringList.Create;
        MyList.Clear;
        SourceConnection1.Connected:=false;
        SourceConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";'+
                                            'Data Source='+Trim(Edit2.Text)+
                                            ';Mode=Read;Extended Properties=Excel 8.0;Persist Security Info=True';
        try
          SourceConnection1.Connected:=true;
          SourceTable1.Active:=true;
        except
          application.MessageBox('连接失败!','提示',mb_ok+mb_iconinformation);
          exit;
        end;  
        MyList.Text:=SourceTable1.FieldList.Text;
        SourceTable1.First;
        StringGrid1.ColCount:=MyList.Count+1;
        StringGrid1.RowCount:=SourceTable1.RecordCount+1;
        For i:=0 to MyList.Count-1 do
        StringGrid1.Cells[i+1,0]:=MyList[i];
        i:=0;
        while not SourceTable1.Eof do
        begin
          For J:=0 to MyList.Count-1 do
          begin
            if SourceTable1.FieldByName(MyList[J]).Value<>null then
            begin
             StringGrid1.Cells[j+1,i+1] :=
                   ShowSomeNotVisibleString(SourceTable1.FieldByName(MyList[J]).Value);
            end else
          end;
          StringGrid1.Cells[0,i]:=inttostr(i);
          inc(i);
          SourceTable1.Next;
        end;
      finally
        Freeandnil(MyList);
      end;
    end;
      

  6.   

    读到StringGrid1,再写文本就很简单了
      

  7.   

    还要设置SourceTable1.TableName
    一个Excel相当如一个库,一个单元相当于一个表
      

  8.   

    用Servers页的ExcelApplication控件