如何使用Delphi进行数据库文件的导出、导入(100分)

  • 主题发起人 主题发起人 李守强
  • 开始时间 开始时间

李守强

Unregistered / Unconfirmed
GUEST, unregistred user!
如何使用Delphi进行数据库文件的导出、导入
如把文件导入到Excel中
 
用batchmove吧,有例子的(在delhpi中)
 
使用BatchMove,
Delphi可以通过ODBC进行处理EXCEL表。
 
自己可以做一个和batchmove相同的转换。
 
<B>龌龊办法:</B>
把数据导出到.dbf库中,然后用Excel打开
 
1、用delphi带的Data Migration Wizard可以轻松完成你的要求
2、用OLE技术(OLEContainer)可以完成第二个要求
 
table.batmove或TBatmove都行。
 
用OLE技术(OLEContainer)
 
1.如果是本地小型库,使用BatchMove.
2.如果是大型库,如SQL SERVER,通过标准STOREPROCEDURE取得
表信息,并编程导入,导出(提示,利用SQL可以方便的建立表,本人作过
两个服务器上的SQL 库相互导入,导出,效果还可以.)
 
导出到excel:
var
i,row:integer;
begin
if SaveDialog1.Execute then
begin
Screen.Cursor:=crHourGlass;
ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1] as _WorkSheet);
if not Query.Active then
begin
Query.SQL:=SQL.Lines;
Query.Open;
end;
pgbar.Visible:=true;
pgbar.Max:=query.RecordCount*query.fields.count;
pgbar.Position:=0;
for i:=0 to Query.Fields.Count-1 do
ExcelWOrkSheet1.Cells.Item[1,i+1]:=Query.Fields.FieldName;
row:=2;
while not Query.Eof do
begin
for i:=0 to Query.Fields.Count-1 do
begin
ExcelWOrkSheet1.Cells.Item[row,i+1]:=Query.Fields.AsString;
pgbar.StepIt;
end;
row:=row+1;
Query.Next;
end;
ExcelWorkBook1.SaveCopyAs(SaveDialog1.FileName);
ExcelWOrkBook1.Close(false);
pgbar.Visible:=false;
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
Screen.Cursor:=crDefault;
Application.MessageBox('Export successfully!','Information',0);
end;
end;
 
我的方法是在ODBC中建立一个Excel的数据源。
这样在程序里面可以把这个Excel当作一个文件型数据库处理。
相当与在两个数据库之间导数据。
这样就简单了吧。
 
把数据库的内容转换到EXCEL:

procedure TForm3.BitBtn2Click(Sender: TObject);
var f:textfile;
fs,str:string;
i,j,k:integer;
begin
if not query1.IsEmpty then
begin
if savedialog1.execute then
begin
fs:=savedialog1.filename;
assignfile(f,fs);
rewrite(f);
for i:=0 to query1.FieldCount-1 do
begin
begin
str:=query1.Fields.Displaylabel;
for j:=query1.Fields.datasize to 35 do
begin
str:=str+' ';
end;
write(f,str);
end;
end;
writeln(f,'');
query1.first;
for i:=0 to query1.RecordCount-1 do
begin
for j:=0 to query1.FieldCount-1 do
begin
str:=query1.Fields[j].Displaytext;
for k:=query1.Fields[j].datasize to 35 do
begin
str:=str+' ';
end;
write(f,str);
end;
writeln(f,'');
query1.next;
end;
filestr1:=fs;
closefile(f);
end;
end
else
begin
showmessage('empty table');
end;
query1.first;
end;

保存成excel类型的文件
 
强强出击,哈哈
 
使用BATCH MOVE一般都可以实现,同时使用两个DATASOURCE和TABLE即可.
 
多人接受答案了。
 
后退
顶部