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

📄 unit1.~pas

📁 飞思在线《Delphi7技术手册》配书源代码
💻 ~PAS
字号:
unit Unit1;

interface

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

type
  TfrmEaM = class(TForm)
    SG1: TStringGrid;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    ADOQuery1: TADOQuery;
    OpenDialog1: TOpenDialog;
    ExcelApplication1: TExcelApplication;
    ExcelWorksheet1: TExcelWorksheet;
    ExcelWorkbook1: TExcelWorkbook;
    BtnOpenExcel: TButton;
    lb: TLabel;
    BtnOpenMDB: TButton;
    BtnForward: TButton;
    BtnNext: TButton;
    BtnToMDB: TButton;
    BtnToExcel: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    edtID: TEdit;
    edtName: TEdit;
    edtGender: TEdit;
    edtAge: TEdit;
    procedure BtnOpenExcelClick(Sender: TObject);
    procedure BtnOpenMDBClick(Sender: TObject);
    procedure BtnNextClick(Sender: TObject);
    procedure BtnForwardClick(Sender: TObject);
    procedure SG1Click(Sender: TObject);
    procedure BtnToMDBClick(Sender: TObject);
    procedure BtnToExcelClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmEaM: TfrmEaM;

implementation

{$R *.dfm}

procedure TfrmEaM.BtnOpenExcelClick(Sender: TObject);
var
  i : integer;
  j : integer;
  EParam : OleVariant;
  DocuType : OleVariant;
  wkbk : _WorkBook;
begin
  sg1.RowCount:=1; 
  opendialog1.InitialDir:=ExtractFileDir(paramstr(0));
  //文件打开的初始路径
  opendialog1.Execute;

  Try
    ExcelApplication1.Connect;
  Except
    Showmessage('Excel文件打开失败!');
    Exit;
  End;

  ExcelApplication1.Visible[0]:=False;
  ExcelApplication1.Caption:='Excel数据文件';

  EParam:=EmptyParam;
  DocuType:=0;
  try
    wkBk:=ExcelApplication1.Workbooks.Add(EParam, DocuType);

    wkBk:=ExcelApplication1.WorkBooks.Open(opendialog1.FileName,EmptyParam,EmptyParam,
      EmptyParam,EmptyParam,EmptyParam,EmptyParam,
      EmptyParam,EmptyParam,EmptyParam,EmptyParam,
      EmptyParam,EmptyParam,DocuType,EmptyParam,DocuType);
  except
    begin
      ExcelApplication1.Disconnect;//出现异常情况时关闭
      ExcelApplication1.Quit;
      showmessage('请选择EXCEL数据表格!');
      exit;
    end;
  end;

  ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);//ExcelWorkbook1与Eexcelapplication1建立连接
  ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1与Excelworkbook1建立连接

  //开始从EXCEL中取数,放到stringgrid中,取完数后关闭EXCEL
  for i:=1 to 10 do
    for j:=1 to 4 do
      begin
        if trim(excelworksheet1.cells.item[i+1,1])<>'' then
          begin
            sg1.rowCount:=i+2;
            sg1.Cells[j,i]:=ExcelWorksheet1.Cells.Item[i,j];
          end
        else
          begin
            //将第一条数据赋给编辑框
            edtID.text:=sg1.Cells[1,1];
            edtName.text:=sg1.Cells[2,1];
            edtGender.text:=sg1.Cells[3,1];
            edtAge.text:=sg1.Cells[4,1];
            exit;
          end;
      end;
    ExcelApplication1.Disconnect;
    ExcelApplication1.Quit;
end;

procedure TfrmEaM.BtnOpenMDBClick(Sender: TObject);
var
  i : integer;
  j : integer;
begin
  //开始从MDB数据表中取数,放到stringgrid中
  sg1.rowcount:=1; 
  adotable1.First;
  while not adotable1.eof do
    begin
      sg1.rowCount:=i+2;
      sg1.Cells[1,i]:=adotable1.fieldbyname('ID').Value;
      sg1.Cells[2,i]:=adotable1.fieldbyname('Name').Value;
      sg1.Cells[3,i]:=adotable1.fieldbyname('Gender').Value;
      sg1.Cells[4,i]:=adotable1.fieldbyname('Age').Value;

      adotable1.Next; 
    end;

  //将第一条数据赋给编辑框
  edtID.text:=sg1.Cells[1,1];
  edtName.text:=sg1.Cells[2,1];
  edtGender.text:=sg1.Cells[3,1];
  edtAge.text:=sg1.Cells[4,1];
end;

procedure TfrmEaM.BtnNextClick(Sender: TObject);
var
  i:integer;
begin
  i:=sg1.row+1;

  if i<>sg1.RowCount then
    begin
      sg1.row:=sg1.row+1;

      edtID.text:=sg1.Cells[1,i];
      edtName.text:=sg1.Cells[2,i];
      edtGender.text:=sg1.Cells[3,i];
      edtAge.text:=sg1.Cells[4,i];

      exit;
    end
  else
    showmessage('已到第一条记录!');
end;


procedure TfrmEaM.BtnForwardClick(Sender: TObject);
var
  i:integer;
begin
  i:=sg1.row-1;

  if i<>0 then
    begin
      sg1.row:=sg1.row-1;

      edtID.text:=sg1.Cells[1,i];
      edtName.text:=sg1.Cells[2,i];
      edtGender.text:=sg1.Cells[3,i];
      edtAge.text:=sg1.Cells[4,i];

      exit;
    end
  else
    showmessage('已到第一条记录!');
end;

procedure TfrmEaM.SG1Click(Sender: TObject);
var
  i:integer;
begin
  i:=sg1.row;

  edtID.text:=sg1.Cells[1,i];
  edtName.text:=sg1.Cells[2,i];
  edtGender.text:=sg1.Cells[3,i];
  edtAge.text:=sg1.Cells[4,i];
end;

procedure TfrmEaM.BtnToMDBClick(Sender: TObject);
var
  i : integer;
  j : integer;
  EParam : OleVariant;
  DocuType : OleVariant;
  wkbk : _WorkBook;
begin
  opendialog1.InitialDir:=ExtractFileDir(paramstr(0));
  //文件打开的初始路径
  opendialog1.Execute;

  Try
    ExcelApplication1.Connect;
  Except
    Showmessage('Excel文件打开失败!');
    Exit;
  End;

  ExcelApplication1.Visible[0]:=False;
  ExcelApplication1.Caption:='Excel数据文件';

  EParam:=EmptyParam;
  DocuType:=0;
  try
    wkBk:=ExcelApplication1.Workbooks.Add(EParam, DocuType);

    wkBk:=ExcelApplication1.WorkBooks.Open(opendialog1.FileName,EmptyParam,EmptyParam,
      EmptyParam,EmptyParam,EmptyParam,EmptyParam,
      EmptyParam,EmptyParam,EmptyParam,EmptyParam,
      EmptyParam,EmptyParam,DocuType,EmptyParam,DocuType);
  except
    begin
      ExcelApplication1.Disconnect;//出现异常情况时关闭
      ExcelApplication1.Quit;
      showmessage('请选择EXCEL数据表格!');
      exit;
    end;
  end;

  ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);//ExcelWorkbook1与Eexcelapplication1建立连接
  ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1与Excelworkbook1建立连接

  //开始从EXCEL中取数,放到stringgrid中,取完数后关闭EXCEL
  for i:=1 to 10 do
    begin
      if trim(excelworksheet1.cells.item[i+1,1])<>'' then
        begin
          AdoTable1.Append;
          AdoTable1.fieldbyname('ID').value:=ExcelWorksheet1.Cells.Item[i,1];
          AdoTable1.fieldbyname('Name').value:=ExcelWorksheet1.Cells.Item[i,2];
          AdoTable1.fieldbyname('Gender').value:=ExcelWorksheet1.Cells.Item[i,3];
          AdoTable1.fieldbyname('Age').value:=ExcelWorksheet1.Cells.Item[i,4];
          AdoTable1.Post;
        end
    end;

  ExcelApplication1.Disconnect;
  ExcelApplication1.Quit;
end;

procedure TfrmEaM.BtnToExcelClick(Sender: TObject);
var
  i : integer;
  EParam : OleVariant;
  DocuType : OleVariant;
  wkbk : _WorkBook;
  FileName : OleVariant;
begin
  Try
    ExcelApplication1.Connect;
  Except
    Showmessage('Excel文件打开失败!');
    Exit;
  End;

  ExcelApplication1.Visible[0]:=False;
  ExcelApplication1.Caption:='Excel数据文件';

  EParam:=EmptyParam;
  DocuType:=0;
  try
    wkBk:=ExcelApplication1.Workbooks.Add(EParam, DocuType);
  except
    begin
      ExcelApplication1.Disconnect;//出现异常情况时关闭
      ExcelApplication1.Quit;
      showmessage('创建EXCEL数据表格失败!');
      exit;
    end;
  end;

  ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);//ExcelWorkbook1与Eexcelapplication1建立连接
  ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1与Excelworkbook1建立连接

  AdoTable1.First;
  i:=1;
  while not AdoTable1.Eof do
    begin
      ExcelWorksheet1.Cells.Item[i,1]:=AdoTable1.fieldbyname('ID').value;
      ExcelWorksheet1.Cells.Item[i,2]:=AdoTable1.fieldbyname('Name').value;
      ExcelWorksheet1.Cells.Item[i,3]:=AdoTable1.fieldbyname('Gender').value;
      ExcelWorksheet1.Cells.Item[i,4]:=AdoTable1.fieldbyname('Age').value;
      AdoTable1.next;
      i:=i+1;
    end;

  wkBk:=ExcelApplication1.ActiveWorkbook;
  DocuType:=0;
  FileName:='d:\mywb.xls';
  wkBk.Close(True, FileName, EmptyParam, DocuType);

  ExcelApplication1.Disconnect;
  ExcelApplication1.Quit;
  showmessage('数据转换完毕!');
end;

end.

⌨️ 快捷键说明

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