⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.~pas

📁 Delphi7数据库开发教程,包含该书21套实例
💻 ~PAS
字号:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleServer, ExcelXP, StdCtrls, DB, Grids, DBGrids, DBTables;

type
  TForm1 = class(TForm)
    btnConvert: TButton;
    ExcelApplication1: TExcelApplication;
    Table1: TTable;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    btnClose: TButton;
    ExcelWorkbook1: TExcelWorkbook;
    ExcelWorksheet1: TExcelWorksheet;
    procedure btnConvertClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnCloseClick(Sender: TObject);
  private
    { Private declarations }
    Procedure WriteData;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnConvertClick(Sender: TObject);
var empty:OleVariant;
begin
  try
    Excelapplication1.Connect;
  except
    MessageDlg('Excel可能没有安装', mtError, [mbOk], 0);
    Abort;
  end;

  ExcelApplication1.Visible[0] := True;
  try
    empty := EmptyParam;
    //添加一个新工作簿
    ExcelApplication1.Workbooks.Add(empty,0);
    //组件和工作簿连接
    ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks.Item[
                                         ExcelApplication1.Workbooks.Count]);
    //激活工作簿
    ExcelWorkBook1.Activate ;
    //组件和工作表连接
    ExcelWorksheet1.ConnectTo((ExcelWorkbook1.Worksheets[1] as _WorkSheet));
    //调用自定义函数将数据库中的数据保存到工作表中
    WriteData;
  except
    ExcelWorkBook1.Close(xlDoNotSaveChanges);
    ExcelApplication1.Disconnect;
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  //断开连接
  Excelapplication1.Disconnect ;
end;

procedure TForm1.btnCloseClick(Sender: TObject);
begin
  Close;
end;

//自定义函数用于从数据库中逐行的读取数据
//并写入当前工作表中
procedure TForm1.WriteData;
var Col:Char;
    Row,j:integer;
    R:String;
begin
  with table1 do
  begin
    //从第一条记录开始
    first;
    Col := 'A';    //第一列为A
    Row := 1;      //从第一行开始
    while not eof do
    begin
      //从数据库中每一行中逐个读取各个字段数值
      for j :=0 to Fields.Count-1 do
      begin
        //指定范围
        R := String(Col) + IntToStr(Row);
        //将数据库中的数据写入Excel中
        ExcelWorksheet1.Range[R,R].Value2 := Fields.Fields[j].Value ;
        //得到下一列,依次为A、B、C……
        Col := Chr(Ord(Col)+1);
      end;
      Inc(Row);       //下一行
      Col := 'A';     //重新指向第1列
      Next;           //下一条记录
    end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -