如果把报表中的数据向excel中导入,若有多个工作表,每个工作表对应excel中的一个sheet,在导入的过程中第一页数据导入正确,后面的不正确,为什么?
是不是没有定好excel中的activeworksheet的问题,谢谢

解决方案 »

  1.   


    如何在Delphi5中把報表輸出為Excel格式 procedure TForm3.BitBtn2Click(Sender: TObject);
    var f:textfile;
        fs,str:string;
        i,j,k:integer;
    begin
    if not query1.IsEmpty then
    begin
    if savedialog1.execute then
     begin
       fs:=savedialog1.filename;
       assignfile(f,fs);
       rewrite(f);
       for i:=0 to query1.FieldCount-1 do
       begin
         begin
         str:=query1.Fields[i].Displaylabel;
          for j:=query1.Fields[i].datasize to 35 do
           begin
            str:=str+' ';
           end;
         write(f,str);
         end;
       end;
       writeln(f,'');
       query1.first;
       for i:=0 to query1.RecordCount-1  do
        begin
         for j:=0 to query1.FieldCount-1 do
         begin
          str:=query1.Fields[j].Displaytext;
          for k:=query1.Fields[j].datasize to 35 do
           begin
            str:=str+' ';
           end;
         write(f,str);
         end;
         writeln(f,'');
         query1.next;
        end;
       filestr1:=fs;
       closefile(f);
     end;
    end
    else
    begin
     showmessage('empty table');
    end;
    query1.first;
    end;################################################################################unit UseExcelExample;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ComObj, StdCtrls, OleServer, Excel97;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        ExcelApplication,ExcelWorkSheet,SheetColumn:Variant;
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
      ExcelApplication:=CreateOleObject('Excel.Application');
      //装了Excel之后注册表中就有Excel.Application项,在HKEY_CLASSES_ROOT下  ExcelApplication.Visible:=true;  ExcelApplication.caption:='Excel 标题';  ExcelApplication.workbooks.add(xlWorksheet);//加入一个WorkBook
      //若add后面不加参数,则缺省生成含有3个WorkSheet 的WorkBook
      //add后面加参数xlWorksheet,则生成含有1个WorkSheet 的WorkBook (=1好象也有同样的效果)  ExcelApplication.workbooks[1].sheets.add;//加入一个WorkSheet
      //加入n个WorkSheet:ExcelApplication.workbooks[1].sheets.add(,,n,);  ExcelWorkSheet:=ExcelApplication.workbooks[1].sheets[1];
      ExcelWorkSheet.name:='name';  //改变列属性
      SheetColumn:=ExcelWorkSheet.Columns[1];
      SheetColumn.ColumnWidth:=20;
      SheetColumn.Font.Color:=clBlue;
      SheetColumn.Font.Name:='宋体';
      SheetColumn.Font.Size:=16;
      SheetColumn.Font.Bold:=true;//粗体
      SheetColumn.Font.Italic:=true;
      SheetColumn.Font.UnderLine:=true;
      //单元格赋值
      ExcelWorkSheet.cells[1,1]:='s222';//写一个字符串
      ExcelWorkSheet.cells[2,1]:=now;//写一个时间值
      ExcelWorkSheet.cells[2,3]:=12345;//写一个整数
      ExcelWorkSheet.cells[3,3]:=111.432;//写一个浮点数
      //最好都转换成字符串,要不然excel可能会自动给你加一些¥之类的符号  ExcelWorkSheet.cells[3,4]:='=Sum(c2,c3)';//写一个公式  //改变单元格属性
      ExcelWorkSheet.cells[2,3].Font.Color:=clRed;
      ExcelWorkSheet.Range['a1:e6'].Borders.LineStyle:=xlContinuous;//画格 
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      //关闭Excel
      if not VarIsEmpty(ExcelApplication) then
      begin
        ExcelApplication.DisplayAlerts:=false;//Excel关闭前不进行保存提示
        ExcelApplication.Quit;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      //访问WorkSheet里的数据
      ShowMessage(ExcelWorkSheet.cells.item[2,1]);
    end;end.