我在论坛里面搜索了很多这样的帖子都不太适用.
在Delphi中,我需要做一个报表应用,即是我已经有excel的表,而数据在Access中,但并不是要把Accsee的表完全复制过来,而是不同的字段对应不同的单元格,而且是不连续
这样需要用什么控件比较快捷,是否需要ADO的控件和ExcelApplication?
问题比较急,望回复!

解决方案 »

  1.   

    不就是将数据库里面的数据导入excel嘛?本来就是应该不同的字段放在不同的单元格的啊!不连续是指取数据库里面的不连续数据,还是数据在excel中不连续啊!如果是后者,那不连续有规律吗?
      

  2.   

    是excel单元格不连续,也没有什么规律,但数据量也不大。因为只有一张表,而需要代入的是每个月份的数据。我想知道的是如何提取出数据,然后放入。越便捷越好,因为这个应用也不大,数据量很小,就是有点麻烦
      

  3.   

    是不是将数据库里面的数据放到指定的Excel中的指定的单元格中啊?
      

  4.   

    用OLE,搜一下以前的帖子,有很多的
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      sTmpPath: array[0..255] of Char;
      sFileNameDoc: string;
      Excel: OleVariant;
      i, j: integer;
      s: string;
    begin
      GetTempPath(255, sTmpPath);
      sFileNameDoc := sTmpPath + 'Excel.xls';
      try
        Excel := CreateOleObject('Excel.Application');
      except
        OkMessageDlg('微软Excel没有安装,请先安装Excel软件。');
        Excel.Quit;
        Excel:=UnAssigned;
        abort;
      end;
      try
        Excel.Visible := True;
        Excel.Workbooks.Open(sFileNameDoc);
        for i := 1 to 44 do
          for j := 1 to 7 do
          begin
            s := Excel.Cells[i, j];
            if s = '姓名' then Excel.Cells[i, j + 1] := '张三';
          end;
      finally
        Excel.Quit;
        Excel := UnAssigned;
      end;
    end;
      我觉得你从数据库里面取出来的数据应该有指定位置吧。在word中可以用书签来定位,在excel中不知道用什么定位,所以就只好根据EXCEL表中现在的内容来确定要填数据的单元格了。就像上例找到了‘姓名’的位置,那应该在后面或者下面填从数据库里面去出来的名字吧!
      这是在程序中打开的临时文件夹里面存在的Excel表,如果不是在程序里面打开的,那我就不会用了。还有就是怎么得到EXCEL表里面的行和列我不知道,所以我用了固定值44和7。我也正为此问题发愁呢!如果那位知道,请告诉我一下。
      好象很罗嗦哦!我也是初学,很多都不懂,也不会用!请多多指教!呵呵
      

  6.   

    顺便问一下,在Excel的宏里面写代码,我怎么样的得到Excel的行和列,还有怎么动态得到Excel的各个单元格里面的内容啊?
    谢谢!