我编写一个DBF数据转换成EXCEL数据的软件,在DBF记录数据太多时电脑会当机,请各位帮忙分析,是否EXCEl有记录数限制procedure TForm1.Button3Click(Sender: TObject);//找开DBF数据库文件
var
ConStr:string;
FDataPath:string;
begin
if opendialog1.Execute then
edit1.Text:=Opendialog1.FileName;FDataPath:=Extractfilepath(edit1.Text);
ConStr:='Provider=MSDASQL.1;Extended Properties="Driver={Microsoft Visual FoxPro Driver};SourceDB='+FDataPath+';SourceType=DBF;Exclusive=No;"';
ADOConnection1.Close ;
ADOConnection1.ConnectionString:=ConStr; try
ADOConnection1.connected:=true;
ADOQuery1.Connection:=ADOConnection1;
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from');
sql.Add(ExtractFileName(edit1.text));
open;
end; except
MEssageDlg('DBF数据文件打开出错',mtWarning,[mbOk],0);
abort;
end;
end;procedure TForm1.Button1Click(Sender: TObject); //将DBF数据转换成EXCEL数据
var
Temp_Worksheet:_WorkSheet;
Filename:string;
i,row,column:integer;
begin
if edit1.Text='' then
begin
MEssageDlg('请选择需转换的DBF文件',mtWarning,[mbOk],0);
abort;
end; Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel 可能没有安装', mtError, [mbOk], 0);
exit;
End;
ExcelApplication1.Visible[0]:=false;
ExcelApplication1.Caption:='DBF数据转出为EXCEL文档';
filename:=leftstr(edit1.text,length(edit1.Text)-4)+'.xls'; if FileExists(filename)=false then
begin
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
Temp_Worksheet:=ExcelWorkbook1.Worksheets.add(EmptyParam,EmptyParam,
EmptyParam,EmptyParam,0) as _WorkSheet;
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);
ExcelWorkSheet1.Name:=ExtractFileName(edit1.text);
ExcelWorkSheet1.Activate;
row:=1;
column:=1;
for i:=1 to adoquery1.FieldCount do
begin ExcelWorksheet1.Cells.Item[row,column]:=ADOQuery1.Fields[i-1].FieldName;
column:=column+1;
end; row:=2;
While Not(adoquery1.Eof) do
begin
column:=1;
for i:=1 to adoquery1.FieldCount do
begin
//showmessage( inttostr(i)+' '+adoquery2.fields[i-1].AsString);
ExcelWorksheet1.Cells.Item[row,column]:=adoquery1.fields[i-1].value;
column:=column+1;
end;
adoquery1.Next;
row:=row+1;
end; Excelworksheet1.SaveAs(filename);
MessageDlg('DBF数据转换XLS数据成功!'+#13+#13+'数据地址如下:'+#13+#13+filename,mtInformation,[mbOK],0);
end //for no find filename
else
begin
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
MessageDlg('数据已经存在,不需再转换!'+#13+#13+'数据地址如下:'+#13+#13+filename,mtInformation,[mbOK],0);
exit;
end; Excelworkbook1.Disconnect;
excelworksheet1.Disconnect;
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;end;
var
ConStr:string;
FDataPath:string;
begin
if opendialog1.Execute then
edit1.Text:=Opendialog1.FileName;FDataPath:=Extractfilepath(edit1.Text);
ConStr:='Provider=MSDASQL.1;Extended Properties="Driver={Microsoft Visual FoxPro Driver};SourceDB='+FDataPath+';SourceType=DBF;Exclusive=No;"';
ADOConnection1.Close ;
ADOConnection1.ConnectionString:=ConStr; try
ADOConnection1.connected:=true;
ADOQuery1.Connection:=ADOConnection1;
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from');
sql.Add(ExtractFileName(edit1.text));
open;
end; except
MEssageDlg('DBF数据文件打开出错',mtWarning,[mbOk],0);
abort;
end;
end;procedure TForm1.Button1Click(Sender: TObject); //将DBF数据转换成EXCEL数据
var
Temp_Worksheet:_WorkSheet;
Filename:string;
i,row,column:integer;
begin
if edit1.Text='' then
begin
MEssageDlg('请选择需转换的DBF文件',mtWarning,[mbOk],0);
abort;
end; Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel 可能没有安装', mtError, [mbOk], 0);
exit;
End;
ExcelApplication1.Visible[0]:=false;
ExcelApplication1.Caption:='DBF数据转出为EXCEL文档';
filename:=leftstr(edit1.text,length(edit1.Text)-4)+'.xls'; if FileExists(filename)=false then
begin
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
Temp_Worksheet:=ExcelWorkbook1.Worksheets.add(EmptyParam,EmptyParam,
EmptyParam,EmptyParam,0) as _WorkSheet;
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);
ExcelWorkSheet1.Name:=ExtractFileName(edit1.text);
ExcelWorkSheet1.Activate;
row:=1;
column:=1;
for i:=1 to adoquery1.FieldCount do
begin ExcelWorksheet1.Cells.Item[row,column]:=ADOQuery1.Fields[i-1].FieldName;
column:=column+1;
end; row:=2;
While Not(adoquery1.Eof) do
begin
column:=1;
for i:=1 to adoquery1.FieldCount do
begin
//showmessage( inttostr(i)+' '+adoquery2.fields[i-1].AsString);
ExcelWorksheet1.Cells.Item[row,column]:=adoquery1.fields[i-1].value;
column:=column+1;
end;
adoquery1.Next;
row:=row+1;
end; Excelworksheet1.SaveAs(filename);
MessageDlg('DBF数据转换XLS数据成功!'+#13+#13+'数据地址如下:'+#13+#13+filename,mtInformation,[mbOK],0);
end //for no find filename
else
begin
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
MessageDlg('数据已经存在,不需再转换!'+#13+#13+'数据地址如下:'+#13+#13+filename,mtInformation,[mbOK],0);
exit;
end; Excelworkbook1.Disconnect;
excelworksheet1.Disconnect;
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;end;
解决方案 »
- 两个表查询问题
- devexpress 中有带复选项框的树控件吗,要有是那一个
- 无聊
- 如何把在delphi中把记录添加到dbf表中?
- 用adoquery联表,请问"删除"按钮怎么写呀!!
- 在线等待,如何向sql数据库中保存图片?
- 一个简单的MIDAS程序,但都有问题,WHY??(急)
- delphi里自己写的procedure和function要怎么声明一下才可以用呀?
- DevExpress Quantun Grid 的TdxDBGridLookupColumn如何关联到另外一个表
- delphi中用paradox如何处理400个汉字的记录?万分感谢。
- 求Delphi5 开发人员指南配套光盘?
- setfocus出错
你不要一次写太多