请教如何从excel导入数据到dbgrid或其他控件? 我有个程序需要从excel中导数据到程序里的一个dbgrid里按顺序调用。现在不知道怎么下手,请各位哥哥指点一下迷经,谢谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用ado可以存取excel表,使用Microsoft Jet 4.0 OLE DB Provide,并且将数据链接属性(data link properties)的所有页(第四页)的Extended Properties属性设为EXCEL 8.0.这样存取excel表就与数据库表一样了 DataSet.SQL.Clear;sqlStr := 'SELECT * into #dcb_TempMend FROM OpenDataSource(' + #39 + 'Microsoft.Jet.OLEDB.4.0'+#39 +','+ #39 + 'Data Source=' + filePath + filename + ';User ID=Admin;Password=;'+'Extended properties=Excel 8.0' + #39 + ')...' + copy(filename,1,pos('.',filename)-1) + '$' ;DataSet.SQL.Add(sqlStr); 我的最简单用ADOQueryADOQuery1->ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ="+OpenDialog1->FileName;ADOQuery1->SQL->Text = "Select * from [Sheet1$]";ADOQuery1->Open();然后就可以随便用了 一行行的读,然后导到表里,方法较笨:)type PA = ^TPASN2_NEW; TPA = record A: String; B: String; end; procedure TForm1.loadExcel(fileName: String); var FA: PA; begin //读Excel文件 ExcelApplication1.Visible[0]:=false; Excelapplication1.Workbooks.Open(OpenDialog1.FileName,null,null,null,null,null,null,null,null,null,null,null,null,0); WorkBk := ExcelApplication1.WorkBooks.Item[1]; WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet; WorkSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate; X := Excelapplication1.ActiveCell.Row; Y := Excelapplication1.ActiveCell.Column; RangeMatrix := Excelapplication1.Range['A1',Excelapplication1.Cells.Item[X,Y]].Value; //按行进行循环 for iRE:=2 to X-2 do begin New(FA); //此处我创建了一个结构体指针用来存取信息 FA^.A := Trim(RangeMatrix[iRE+2,2]); FA^.B := Trim(RangeMatrix[iRE+2,2]); //进行数据存入数据库 with Query1 do begin Close; sql.text := 'insert into table1 (a,b) values(:a,:b)'; Parameters.ParamByName('a').value := FA^.A; Parameters.ParamByName('b').value := FA^.B; ExecSql; end; end; end; 内存映射的概念问题 delphi高手请进!! DBGrid的列名Column问题 求在程序中加载包(bpl),卸载包的方法 RMB求助gina记录错误帐号密码,写到日志文件 ’Error loading midas.dll‘应该怎么办? 用delphi做一个标准windows程序,能不能直接写Cookies,急 我写了个delphi的程序,如何给程序加密.我听说过加密狗,大侠请顺便介绍一下. 一个关于form的问题 delphi新手(送分):问题简单,分数不多,一定会给,先到先得 delphi7与delphi5有什么区别 求telnet 控件
(data link properties)的所有页(第四页)的Extended Properties属性设为EXCEL 8.0.
这样存取excel表就与数据库表一样了
sqlStr := 'SELECT * into #dcb_TempMend FROM OpenDataSource(' + #39 + 'Microsoft.Jet.OLEDB.4.0'+
#39 +','+ #39 + 'Data Source=' + filePath + filename + ';User ID=Admin;Password=;'+
'Extended properties=Excel 8.0' + #39 + ')...' + copy(filename,1,pos('.',filename)-1) + '$' ;
DataSet.SQL.Add(sqlStr);
用ADOQuery
ADOQuery1->ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ="+OpenDialog1->FileName;
ADOQuery1->SQL->Text = "Select * from [Sheet1$]";
ADOQuery1->Open();
然后就可以随便用了
PA = ^TPASN2_NEW;
TPA = record
A: String;
B: String;
end; procedure TForm1.loadExcel(fileName: String);
var FA: PA;
begin
//读Excel文件
ExcelApplication1.Visible[0]:=false;
Excelapplication1.Workbooks.Open(OpenDialog1.FileName,null,null,null,null,null,null,null,null,null,null,null,null,0);
WorkBk := ExcelApplication1.WorkBooks.Item[1];
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
WorkSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate;
X := Excelapplication1.ActiveCell.Row;
Y := Excelapplication1.ActiveCell.Column;
RangeMatrix := Excelapplication1.Range['A1',Excelapplication1.Cells.Item[X,Y]].Value;
//按行进行循环
for iRE:=2 to X-2 do
begin
New(FA); //此处我创建了一个结构体指针用来存取信息
FA^.A := Trim(RangeMatrix[iRE+2,2]);
FA^.B := Trim(RangeMatrix[iRE+2,2]);
//进行数据存入数据库
with Query1 do
begin
Close;
sql.text := 'insert into table1 (a,b) values(:a,:b)';
Parameters.ParamByName('a').value := FA^.A;
Parameters.ParamByName('b').value := FA^.B;
ExecSql;
end;
end;
end;