今天为能在Delphi中导入Excel数据调试了一天,网上也搜了很多资料,网上资料不太完整,对于新手学习能拷贝代码直接运行的代码少之又少,鉴于此本人最终调试成功的结果有必要放上来,以此为乐。
首先,新建Delphi Projects选择VCL Forms Application,在Form1表单上放置如下控件:
1、数据源控件ADOConnection、ADODataset和DataSource
2、文件控件OpenDialog
3、数据表DBGridEh(若用DBGrid请自行调试)
4、两个文本框Edit1和Edit2
5、2个按钮Button1和Button2
再次,进行属性设置,ADOConnection1用默认值,ADODataset1的connection选择ADOConnection1,DataSource1的DataSet设置为ADODataset1,DBGridEh1的DataSource设置为DataSource1。
最后放置如下代码:
procedure TForm1.Button1Click(Sender: TObject); {打开路径} begin opendialog1.Filter:='Microsoft Excel Workbook (*.xls)|*.XLS|'+ 'Text files (*.txt)|Comma separated values (*.csv)|*.CSV|'+ 'Rich Text Format (*.rtf)|*.RTF'; if opendialog1.Execute then edit2.Text:=opendialog1.FileName; end; procedure TForm1.Button2Click(Sender: TObject); {先重置连接并上传数据并可多次点击} begin if edit2.Text<> '' then begin try ADODataSet1.Close; ADODataSet1.ConnectionString:=''; ADODataSet1.ConnectionString:= 'provider=microsoft.jet.oledb.4.0; data source='+edit2.Text + ';User ID=Admin;extended properties=excel 8.0;persist security info=false; '; ADODataSet1.CommandText := 'select * from [' + edit1.Text + '$]'; ADODataSet1.Parameters.Clear; ADODataSet1.Parameters.ParseSQL(ADODataSet1.CommandText, true); ADODataSet1.Open; except end; end; end;
PS:图中文件路径处J:\book2.xls 的为Edit2,工作表Sheet1的为Edit1。
运行OK,环境为Delphi 2010 DBGRIDEH 5.2.84