delphi如何将其它程序界面中的GRID表格中的数据取得或者导出?
不知道是什么GRID控件,因为需要精确数据,所以不考虑抓图后再OCR识别的办法(还因为GRID有滚动所以抓图方法不一定取得所有数据)。
如果有其它现成控件更好。
谢谢高手!

解决方案 »

  1.   

    补充一下,其它程序中GRID表格的控件类型可以知道是TStringGrid
      

  2.   

    再次补充:其它程序中的GRID的句柄、控件类型均可获得,现在问题就是如何对这个GRID进行数据导出的操作。
      

  3.   

    如果你使用的是SQLServer,你可以使用SQL Profiler工具监视SQL语句。
    利用SQL Server的功能可以导出。
    如果不是SQLServer,你可以建立一个BDE连接,Delphi同样提供了SQL Monitor工具。
      

  4.   

    这个简单啊! 给你一段代码,你看看 ,我写的一段导出到EXCEL的程序,截取的一段不能直接使用,直接找相应的Query或者Table 再操作。
    if Sender is TDBGrid then
      begin
        if TDBGrid(Sender).DataSource.DataSet.Active = False then
        begin
          Application.MessageBox(pchar('并没有数据啊!'),pchar('提示'),mb_ok+mb_iconinformation+mb_applmodal);
          Exit ;
        end
        else
        begin
          ExcelApp.WorkBooks.Add;
          ExcelApp.Caption:=tableName;      tempchar := char(Byte('A')+Ncolumn-1) ;
          tempstr := 'A1:'+tempchar+'1';
          ExcelApp.worksheets[1].range[tempstr].Merge(True);      tempstr := 'A:'+tempchar ;
          ExcelApp.worksheets[1].range[tempstr].HorizontalAlignment := $FFFFEFF4;
          ExcelApp.worksheets[1].range[tempstr].VerticalAlignment := $FFFFEFF4;
          ExcelApp.WorkSheets[1].Cells[1,1].Value :=''''+ tableName;
          for i:=2 to TDBGrid(Sender).Columns.Count do
            ExcelApp.WorkSheets[1].Cells[2,i-1].Value :=''''+  TDBGrid(Sender).Columns[i-1].Title.Caption ;
          with TDBGrid(Sender).DataSource.DataSet do
          begin
            i:=3 ;
            First;
            while not Eof do
            begin
            for j:=2 to TDBGrid(Sender).Columns.Count do
            begin
              tempstr:=TDBGrid(Sender).Columns[j-1].FieldName ;
              ExcelApp.WorkSheets[1].Cells[i,j-1].Value :=''''+  FieldByName(tempstr).AsString;
            end;
            Inc(i);
            Next ;
            end;
          end;
        end;
      end
      

  5.   

    我说的是DBGRID 估计咱两个说的不是一回事 StringGrid 也是一回事 从头到尾遍历一遍就OK了
      

  6.   

    楼上跟前面还真不是说同件事.呵呵,他要的是,如何拿到别人程序内的TSTRINGGRID控件内的所有数据,
    可以复制或导入到自己程序中的TSTRINGGRID或别的控件,关键是如何得到独立程序内的TSTRINGGRID内的数据.
      

  7.   

    大家请看清我的要求,我要从其它程序的TstringGrid控件中取得数据,而非自己的程序。
      

  8.   

    我去百度了以下,有个帖子里面有个回复是这样的,他说在自己的程序中也加一个TstringGrid控件,然后获取其他程序中的TStringGrid控件的内存地址,将自己创建的控件的内存地址指向那个内存地址,这样你的控件就和其它程序里面的控件数据一样了,这样就可以导出TstringGrid控件中的数据。看起来有点道理,但无从下手,不知道如何做,请高手出来吧。跪谢!如能解决当厚谢哦!!!
      

  9.   

    你遍历他的界面上的控件,然后找出他的是TstringGrid的类句柄操作看可以不
      

  10.   

    不是找句柄的问题,现在TstringGrid的句柄可以取得,目前任务是提取TstringGrid里面的数据的问题。