怎样从Excel中把数据导入Delphi的Dbgird里(100分)

  • 主题发起人 主题发起人 yangtan
  • 开始时间 开始时间
Y

yangtan

Unregistered / Unconfirmed
GUEST, unregistred user!
谁发个代码
 
用ADO方式读取EXCEl

1.设置ADOConnection的ConnectionString
构造ConnectionString时,OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider作为ADO的驱动程序。这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件。
连接的数据库名称当然就是你要打开的Excel文件,注意扩展名是*.xls,而不是*.mdb。
最关键的一点是,还要设置扩展属性Extended Properties为“Excel 8.0”,否则,测试连接时会报告无法识别数据格式的错误。Extended Properties的属性值在“所有”参数页中输入。
最后,设置完成后的ConnectionString中的各项参数为:
Provider=Microsoft.Jet.OLEDB.4.0
Data Source=MyExcelFile.xls
Extended Properties=Excel 8.0
Persist Security Info=False

  2.设置ADODataSet或ADOTable
将ADODataSet或ADOTable连接到刚才的ADOConnection。如果不用ADOConnection,也可以参照上面的方法直接设置ADODataSet或ADOTable的ConnectionString属性。
对于ADODataSet,需要将CommandType属性设置为cmdTableDirect,而对于ADOTable,则将TableDirect属性设置为True。因为,访问Excel文件是直接的数据文件访问,不是通过SQL语句来操作游标访问的。如果不设置直接访问,则系统会报告SQL语句格式错误等信息。
然后,当你下拉ADODataSet中的CommandText属性或ADOTable的TableName属性时,就可以选择到要打开的工作表了。注意,表名后面多了加一个$符号。

3.打开ADODataSet或ADOTable
 
代码供参考:
var no,i,j:integer;
tt:TStrings;
SheetName:string; //
begin
with datam.DataM1 do //首先查找数据库中是否已经存在。如果存在,则修改已经存在的数据。
begin
ExcelConnection.Close;
ExcelConnection.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Excel Files;'+
'DBQ='+FileName+';DriverId=790;MaxBufferSize=2048;PageTimeout=5;"';
ExcelConnection.Open;
tt:=tstringlist.Create;
ExcelConnection.GetTableNames(tt,true);
SheetName:=tt.Strings[0];
ExcelQuery1.Close;
ExcelQuery1.SQL.Clear;
ExcelQuery1.SQL.Add('select * from ['+SheetName+'] '); //全部数据
ExcelQuery1.Open; //打开EXCEL文件.

下面就当成普通的表一样操作了。
 
(1)application 对象
(2)workbooks对象
(3)worksheet对象
(4)rangge对象
(5)shellexecute()
 
可以用ado,把execl看作数据表,然后象操作数据库一样操作它。
其连接字符串:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/delphi/MyWork/WageManage/source/DB/template/Book1.xls;Extended Properties=excel 8.0;Persist Security Info=False
改adodataset的commandtype为cmdTableDirect,选commandtext为sheet1$,sheet2$..
这样就能在dbgrid中看到数据了,当然还要datasource
 
能不能用别的方法啊
比如:ole啊
 
http://www.delphibbs.com/keylife/iblog_show.asp?xid=13398
 
后退
顶部