***********数据的导入导出

fhuibo 2006-10-20 10:04:52
请问在DELPHI里怎么执行下面的语句呀
SELECT * into fwmlexcel FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="d:\fhb\ff.xls";Extended properties=Excel 8.0')...[sheet1$]
...全文
188 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2006-10-21
  • 打赏
  • 举报
回复
给你个参考:
http://www.delphibbs.com/keylife/iblog_show.asp?xid=19064
ron_xin 2006-10-20
  • 打赏
  • 举报
回复
有三种方法法:
1.用ADOQuery直接用以上的语句,不过,文件是保存在服务器上的.


2.用DbGridEH的方法,文件可保存在本地

procedure TFrimFiveReport.FlatSpeedButton2Click(Sender: TObject);
begin
inherited;
ppReport1.Print;
end;

procedure TFrimFiveReport.FlatButton1Click(Sender: TObject);
var
ExpClass:TDBGridEhExportClass;
Ext:String;
begin

SaveDialog1.FileName :='五日报';
if SaveDialog1.Execute then
begin
case SaveDialog1.FilterIndex of
1: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
2: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
3: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
4: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
5: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
else
ExpClass := nil; Ext := '';
end;
if ExpClass <> nil then
begin
if UpperCase(Copy(SaveDialog1.FileName,Length(SaveDialog1.FileName)-2,3)) <> UpperCase(Ext) then
SaveDialog1.FileName := SaveDialog1.FileName + '.' + Ext;
try
SaveDBGridEhToExportFile(ExpClass,DBGridEh1,SaveDialog1.FileName,true);
except
msshow('保存失败!');
end;
end;

end;

end;


3.用OLE的方法,文件可保存在本地

procedure TFrmPrintReport.DataToExcel;
var
I, J, K, Count: integer;
S: string;
begin
Panel2.Visible :=true;
Animate1.Active :=true;

//创建Ole对象
try
ExcelApplication := CreateOleObject('Excel.Application');
except
ExcelApplication := Null;
Panel2.Visible :=False;
Animate1.Active :=False;
MSShow('请先安装MicrSoft Office Excel97/2000。');
Exit;
end;

ExcelApplication.Visible := False;
try
ExcelName:=ExcelApplication.WorkBooks.Add(ExtractFilePath(Application.ExeName)+'ReportModal\Modal.xls');
ExcelSheet := ExcelName.Worksheets[1];
except
Panel2.Visible :=False;
Animate1.Active :=False;
MSShow('没有找到报表模板,请保证Modal.xls在程序文件的ReportModal文件夹内!');
Abort;
end;

try
J := 11;

ADOQuery1.First;
while not ADOQuery1.eof do
begin
ExcelSheet.cells(J,1) := ADOQuery1.RecNo;
ExcelSheet.cells(J,2) := ADOQuery1.fieldbyname('OriHB').Value;
ExcelSheet.cells(j,3) := Trim(ADOQuery1.FieldByName('Camer').AsString );
ExcelSheet.cells(j,4) := Trim(ADOQuery1.FieldByName('FlightNo').AsString);
ExcelSheet.cells(j,5) := Trim(ADOQuery1.FieldByName('SurName').AsString);
ExcelSheet.cells(j,6) := Trim(ADOQuery1.FieldByName('GivenName').AsString);
ExcelSheet.cells(j,7) := Trim(ADOQuery1.FieldByName('PassportNo').AsString);
ExcelSheet.cells(j,14) := Trim(ADOQuery1.FieldByName('Weight').AsString);
inc(J);
ADOQuery1.next;
end;

//合并单元格
Ranges:=ExcelSheet.range['A10: P' + inttostr(J -1)];
//画线
Ranges.Borders.LineStyle := 1;
except
MsShow('在往EXCEL写入数据时出现错误,请重新发送Email!');
Panel2.Visible :=False;
Animate1.Active :=False;
abort;
end;

try
//保存数据
ExcelName.SaveAs(MDReportDir+'\'+ReportName);
except
MSShow('无法保存数据');
Panel2.Visible :=False;
Animate1.Active :=False;
abort;
end;

//全部释放variant变量 ,否则Excel进程无法关闭
try
ExcelName.Close;
ExcelApplication.Quit;
ExcelSheet :=Unassigned ;
ExcelName := Unassigned;
ExcelApplication:=Unassigned;
Ranges :=Unassigned;
except

end;


end;

liangpei2008 2006-10-20
  • 打赏
  • 举报
回复
这样试一下!
ADOConnection1.Connected := True;
ADOConnection1.Execute()
knife_s 2006-10-20
  • 打赏
  • 举报
回复
已测试,在MSSQL中执行无误,在ACCESS中无法执行,因OpenDataSource是MSSQL提供的
knife_s 2006-10-20
  • 打赏
  • 举报
回复
不过只能在MSSQL中执行,ACCESS应该不可以
sailorsofth 2006-10-20
  • 打赏
  • 举报
回复
ADOCONNECTION
knife_s 2006-10-20
  • 打赏
  • 举报
回复
这个,好象可以用ADOCONNECTION来直接执行SQL语句吧

连接上数据源后

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧