前几天在坛子里找到了数据导出到excel的帖子,,能够实现,,但是保存的时候是默认的
路径是“我的文档”中,我用savedialog控件试了一下,总实现不了自由的改变保存路径,大家帮忙~~
谁帮忙改好了,我给100分。。不够另外给~~
这是没有用savedialog的代码procedure tform1.WriteExcel(AdsData:Tadoquery; sName, Title: string);
var
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
i, j: integer;
filename: string;
begin
filename := concat(sName, '.xls');
try
ExcelApplication1 := TExcelApplication.Create(Application);
ExcelWorksheet1 := TExcelWorksheet.Create(Application);
ExcelWorkbook1 := TExcelWorkbook.Create(Application);
ExcelApplication1.Connect;
except
Application.Messagebox('Excel没有安装!','Hello',MB_ICONERROR + mb_Ok);
Abort;
end;
try
ExcelApplication1.Workbooks.Add(EmptyParam, 0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
AdsData.First;
for j := 0 to AdsData.Fields.Count - 1 do
begin
ExcelWorksheet1.Cells.item[3, j + 1] := AdsData.Fields[j].DisplayLabel;
ExcelWorksheet1.Cells.item[3, j + 1].font.size :='10';
end;
for i := 4 to AdsData.RecordCount + 3 do
begin
for j := 0 to AdsData.Fields.Count - 1 do
begin
ExcelWorksheet1.Cells.item[i, j + 1] :=
AdsData.Fields[j].Asstring;
ExcelWorksheet1.Cells.item[i, j + 1].font.size := '10';
end;
AdsData.Next;
end;
ExcelWorksheet1.Columns.AutoFit;
ExcelWorksheet1.Cells.item[1, 2] := Title;
ExcelWorksheet1.Cells.Item[1, 2].font.size :='14';
ExcelWorksheet1.SaveAs(filename);
Application.Messagebox(pchar('数据成功导出'+ filename),'xxxxxitong',mb_Ok);
finally
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
ExcelApplication1.Free;
ExcelWorksheet1.Free;
ExcelWorkbook1.Free; end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin WriteExcel(adoquery1,'biaoming','题目!!!');
end;
路径是“我的文档”中,我用savedialog控件试了一下,总实现不了自由的改变保存路径,大家帮忙~~
谁帮忙改好了,我给100分。。不够另外给~~
这是没有用savedialog的代码procedure tform1.WriteExcel(AdsData:Tadoquery; sName, Title: string);
var
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
i, j: integer;
filename: string;
begin
filename := concat(sName, '.xls');
try
ExcelApplication1 := TExcelApplication.Create(Application);
ExcelWorksheet1 := TExcelWorksheet.Create(Application);
ExcelWorkbook1 := TExcelWorkbook.Create(Application);
ExcelApplication1.Connect;
except
Application.Messagebox('Excel没有安装!','Hello',MB_ICONERROR + mb_Ok);
Abort;
end;
try
ExcelApplication1.Workbooks.Add(EmptyParam, 0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
AdsData.First;
for j := 0 to AdsData.Fields.Count - 1 do
begin
ExcelWorksheet1.Cells.item[3, j + 1] := AdsData.Fields[j].DisplayLabel;
ExcelWorksheet1.Cells.item[3, j + 1].font.size :='10';
end;
for i := 4 to AdsData.RecordCount + 3 do
begin
for j := 0 to AdsData.Fields.Count - 1 do
begin
ExcelWorksheet1.Cells.item[i, j + 1] :=
AdsData.Fields[j].Asstring;
ExcelWorksheet1.Cells.item[i, j + 1].font.size := '10';
end;
AdsData.Next;
end;
ExcelWorksheet1.Columns.AutoFit;
ExcelWorksheet1.Cells.item[1, 2] := Title;
ExcelWorksheet1.Cells.Item[1, 2].font.size :='14';
ExcelWorksheet1.SaveAs(filename);
Application.Messagebox(pchar('数据成功导出'+ filename),'xxxxxitong',mb_Ok);
finally
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
ExcelApplication1.Free;
ExcelWorksheet1.Free;
ExcelWorkbook1.Free; end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin WriteExcel(adoquery1,'biaoming','题目!!!');
end;
www.51delphi.com
自己下
很好用
到D:\下去看看?
你的回答也太随意了WriteExcel(adoquery,'这里是存放文件名的地方我知道','题目!!!')到“我的文档/这里是存放文件名的地方我知道.xls“下去看看?
begin
with TSaveDialog.Create(nil)do
begin
Filter:='EXCEL文件(*.xls)|*.xls';
Title:='文件保存到...';
InitialDir:='d:\test';
if Execute then
begin
if pos('.XLS',UpperCase(FileName))=0 then
edtFilePath.Text:=FileName+'.xls'
else
edtFilePath.Text:=FileName;
end;
if FileExists(trim(edtFilePath.Text)) then
begin
if Application.MessageBox('该文件已经存在,是否覆盖?','确认',MB_ICONQUESTION+MB_YESNO)=IDYES then
DeleteFile(FileName)
else
begin
bbtnExport.Enabled := True;
edtFilePath.Clear;
exit;
end;
end;
Free;
end;
end;
WriteExcel(adoquery1,edtFilePath.Text,'题目!!!');
在界面上加入一个文本框