在DELPHI中如何实现直接导入EXCEL表并对表进行操作
我想做个小程序,它要能够导入EXCEL表,导入后在DELPHI中要能够像是操作数据库一样可以操作!
高手们帮帮忙啊!
问题点数:50、回复次数:5Top
1 楼delphimo((误入歧途))回复于 2003-06-01 09:14:23 得分 5
就把excel当做数据库(文本),健个ODBC连接就可以操作了.Top
2 楼moonwzy(令狐不冲)回复于 2003-06-01 10:00:11 得分 5
http://software.ccidnet.com/pub/disp/Article?columnID=295&articleID=36375&pageNO=1
怎么样,是不是你想要得Top
3 楼yjw1018(GIS_yjw)回复于 2003-06-03 23:19:52 得分 30
把excel当做数据库,做个连接就可以操作了
如用ado方法:在delphi中加入adoconnection控件,双击后选择jet 4.0 ole db,在连接页中
选择数据库的名字(.xls),再双击全部(all)页中的Extended Properties,在value中
填入Excel 8.0,OK!
在控件ADODataSet1的CommandText属性中选择了select * from Sheet1$后,别忘了在
Sheet1$的两边加上中括号[],否则出现“FROM子句语法错误”。或者用ADOQuery1控件:在
它的SQL属性中写入:select * from [Sheet1$]。Top
4 楼yixi88()回复于 2003-06-04 08:35:56 得分 10
unit gzscpas;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ComCtrls, StdCtrls,comobj,inifiles;
type
TgzscForm = class(TForm)
Button1: TButton;
DateTimePicker1: TDateTimePicker;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
gzscForm: TgzscForm;
app_path:string;
implementation
{$R *.dfm}
procedure TgzscForm.Button1Click(Sender: TObject);
var
ExcelApp,rangee:variant;
i,row:integer;
time1,time2,path :string;
begin
app_path:=extractfilepath(application.ExeName);
with Tinifile.create(app_path+'pay.ini') do
begin
path :=app_path+'\page\2003.xls';
end;
time1:=formatdatetime('mm',DateTimePicker1.Date);
time2:=formatdatetime('yyyy',DateTimePicker1.Date);
ExcelApp:=createoleobject('excel.application');
ExcelApp.WorkBooks.Open( path );
ExcelApp.WorkSheets[2].Activate;
ExcelApp.Cells[3,1].Activate;
rangee:=ExcelApp.activecell;
with adoquery1 do
begin
close;
sql.Clear ;
sql.add('select * from gz where month(gzsfrq)='+time1+' and year(gzsfrq)='+time2 );
open;
for i:=0 to fields.Count -1 do
begin
rangee.value:=fields[i].DisplayLabel ;
if i=6 then
begin
rangee.value :=time2+time1;
rangee:=rangee.next;
end;
case I of
4..5: rangee.value :='';
0..1: rangee.value :='';
else
rangee:=rangee.next;
end;
end;
first;
row:=4;
while not eof do
begin
rangee:=ExcelApp.range['a'+inttostr(row),'a'+ inttostr(row)];
for i:=0 to fields.Count -1 do
begin
rangee.value:=fields[i].AsString ;
rangee:=rangee.next;
end;
next;
inc(row);
end;
end;
ExcelApp.Visible := True;
ExcelApp.ActiveSheet.PrintPreview;
end;
procedure TgzscForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
procedure TgzscForm.FormDestroy(Sender: TObject);
begin
gzscform:=nil;
end;
end.
试试这段代码如何?我是通过了,就看您如何使用拉!Top
5 楼whqcfp(one_dollar)回复于 2003-06-04 08:40:13 得分 0
关注Top




