从Excel导入到Access

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Excel2000, OleServer,comobj,Buttons, DB, ADODB,
ExtCtrls, ComCtrls, Gauges;

type
TForm1= class(TForm)
BitBtn1: TBitBtn;
OpenDialog1: TOpenDialog;
Inpoupath: TEdit;
Label1: TLabel;
SpeedButton1: TSpeedButton;
ADOQuery1: TADOQuery;
GroupBox1: TGroupBox;
BRow: TEdit;
BCol: TEdit;
STable: TEdit;
TableName: TComboBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Panel1: TPanel;
ProgressBar1: TProgressBar;
Gauge1: TGauge;

procedure BitBtn1Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var

j:integer;
implementation
uses Unit1; //Unit1主窗体的单元
{$R *.dfm}

procedure TExlsToMdb.BitBtn1Click(Sender: TObject);
var
Excel: OleVariant;
iRow,iCol : integer;
xlsFilename: string;
i: integer;
begin
if (trim(Inpoupath.Text) = '') then  //显示Excel路径Inpoupath.Text
begin
MessageBox(GetActiveWindow(), '请正确选择相关路径!', '警告', MB_OK +
MB_ICONWARNING);
exit;
end;
xlsFilename := trim(Inpoupath.Text);
try
Excel := CreateOLEObject('Excel.Application'); //在uses部分加上下面三个单元文件 Excel2000, OleServer,comobj,
except
Application.MessageBox('Excel没有安装!', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);
Exit;
end;
Excel.Visible := false;
Excel.WorkBooks.Open(xlsFilename);
try
j:=0;
Panel1.Visible :=True;
Panel1.Update;
iRow := StrToInt(BRow.Text); //BRow.Text(起始导入表横向位置)BCol.Text(起始导入表纵向位置
iCol := StrToInt(BCol.Text);
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.add('select * from '+TableName.Text +''); 
Open;
first;
end;
while trim(Excel.WorkSheets[1].Cells[iRow,iCol].value) <> '' do
begin
with ADOQuery1 do
begin //(要导入的数据库)
Append;
for I:=0 to (StrToInt(STable.Text)-1) do
Fields[I].AsString := trim(Excel.WorkSheets[1].Cells[iRow,iCol+I].value);
iRow := iRow + 1;
post;
next;
end; ///
j:=j+1;
gauge1.Progress:=j; //进度条
if gauge1.Progress=gauge1.MaxValue then j:=0;
end;
Excel.Quit;
ADOQuery1.UpdateStatus ;
if j<100 then gauge1.Progress:=100; //满进度条
MessageBox(GetActiveWindow(), ' 数据导入成功!', '恭喜', MB_OK + MB_ICONWARNING);
Panel1.Visible :=False;
Panel1.Update;

except
Application.MessageBox('导入数据出错!请检查文件的格式是否正确!', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);
Excel.Quit;
end; 
end;

procedure TExlsToMdb.SpeedButton1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Inpoupath.Text:=OpenDialog1.FileName;//显示Excel路径Inpoupath.Text
end;

end.
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值