最近老师要我们用delphi来导入数据库,excel里面是比较扫描到的一些数据信息,然后我的任务就是如何把这些信息导入到相应的数据库中去。
请高手指点:如何搭建相应的软件环境,不浪费时间就说说大概要做些什么,然后如何用ADO将数据导入,说说主要做些什么。多谢了。!~~
请高手指点:如何搭建相应的软件环境,不浪费时间就说说大概要做些什么,然后如何用ADO将数据导入,说说主要做些什么。多谢了。!~~
解决方案 »
- 自己构造ADODataSet数据集
- 关于adoquery调用存储过程
- 如何将access表的数据转到 SQLServer表里,批量而不是一条条?
- 怪怪怪!!事务处理的问题,出现一次出错后再用事务就出问题了
- 一个老问题!
- 空间命名扩展中的“目录”重命名问题
- 请高手指点,'Sygate'侦听哪个端口,IE,等软件才能自动连上?谢谢!
- Delphi 里TListView 控件如何按照列排序,请大家帮忙
- 怎样调用由C/C++编写的DLL文件,及用它来编写通信程序,救我吧,有可能被炒的危险啊
- 使用Activex library作为服务端的一个问题。
- Image1.Picture.Bitmap.Assign(t_jpg) 错误JpeG Error #42
- 该死的 unable to find record. No key specified 高手指点下
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls,ComOBJ; type
PPerson = ^TPerson;
TPerson = record
FCode: String;
FName: string;
end; type
TForm1 = class(TForm)
con1: TADOConnection;
qry1: TADOQuery;
btn1:TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
//procedure Btn1Click(Sender: TObject);
//procedure Button2Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
FPerson: PPerson;
FPersonList: TList;
function LoadExcel: Boolean;
function SaveToDB: Boolean;
//function DBToExcel: Boolean;
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} function TForm1.LoadExcel: Boolean;
var
RangeMatrix: Variant;
OpenDialog1: TOpenDialog;
iRE: integer;
IN_TYPE,vStockName: String;
sStockName,sCompany: String;
i: Integer;
MsExcel, MsExcelWorkBook, MsExcelWorkSheet: Variant;
Col1,Col2: String;
begin
OpenDialog1:=TOpenDialog.Create(nil);
try
//OpenDialog1.FileName:='*.csv;*.xls';
OpenDialog1.FileName:='*.xls';
if not OpenDialog1.Execute then
begin
Result := false;
exit;
end;
MsExcel := CreateOleObject('Excel.Application');
MsExcelWorkBook := msExcel.Workbooks.Open(OpenDialog1.FileName);
MsExcelWorkSheet := msExcel.Worksheets.Item[1];
except
Result := false;
Exit;
end;
//开始从EXCEL文件读取相关的信息
try
try
Application.ProcessMessages;
for i := 1 to MsExcelWorkSheet.Rows.Count do
begin
if trim(MsExcelWorkSheet.Range['A' + IntToStr(i)].Value)='' then break;
New(FPerson);
FPerson.FCode := trim(MsExcelWorkSheet.Range['A' + IntToStr(i)].Value);
FPerson.FName := trim(MsExcelWorkSheet.Range['B' + IntToStr(i)].Value);
FPersonList.Add(FPerson);
end;
except
Result := false;
Exit;
end;
finally
MsExcel.WorkBooks.Close;
end;
Result := true;
MsExcel.Quit;
OpenDialog1.Free;
end; procedure TForm1.FormCreate(Sender: TObject);
begin
//创建一个list列表,以用来存取表数据
FPersonList := TList.create;
end; procedure TForm1.FormDestroy(Sender: TObject);
begin
FPersonList.Free;//释放资源
end; function TForm1.SaveToDB: Boolean;
var
i: integer; begin
con1.BeginTrans;
try
for i:= 0 to FPersonList.Count-1 do
begin
New(FPerson);
FPerson := FPersonList[i];
with qry1 do
begin
close;
sql.Text := ' insert into ttable(name,ye,ywy,bm,bz) values(:name,:ye,:ywy,:bm,:bz)';
Parameters.ParamByName('name').Value := FPerson.FName;
parameters.ParamByName('ye').Value := FPerson.FCode;
parameters.ParamByName('ywy').Value := FPerson.FCode;
parameters.ParamByName('bm').Value := FPerson.FCode;
parameters.ParamByName('bz').Value := FPerson.FCode;
ExecSql;
end;
end;
con1.CommitTrans;
Result := true;
except
con1.RollbackTrans;
Result := false;
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
LoadExcel;
SaveToDB;
end; procedure TForm1.btn2Click(Sender: TObject);
begin
//DBToExcel;
end; end.
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure SELECT * INTO tablename FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0',
'Excel 8.0;DATABASE=E:\aa.xls',Sheet1$) --关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
因为搭建delphi基本的软件环境不是在这里一两句就讲得清的。你们老师也够水平,将EXCEL中的数据导入到SQL SERVER数据库中,要从没用过DELPHI的人来做。
从学习角度讲,他应该教你们先怎样用DELPHI
从应用角度讲,3楼的方法就可以,除了MS OFFICE和SQLSERVER,什么都不要装了。
begin
//为excel 2007 文件
dm.ADOConnUser.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+Trim(NewAccountMonthWizard.EdtXlsFile.Text) +';Extended Properties=Excel 8.0;Persist Security Info=False';
end
else
begin
dm.ADOConnUser.ConnectionString:='Provider=Microsoft.ACE.OLEDB.12.0;Password='''';Data Source='+Trim(NewAccountMonthWizard.EdtXlsFile.Text) +';Extended Properties=''Excel 12.0;IMEX=1;HDR=YES'';Persist Security Info=True;';
end;直接用ADO连到EXCEL 后,再读取
这两天我也做导EXCEL到SQL SERVER 的,QQ:121810267 欢迎交流