delphi导出到excel,默认路径和excel名称。该怎么处理
delphi导出到excel,默认路径和excel名称。
要把dbgrid里的内容导出到excel,默认到D盘下data文件夹里。默认保存的excel名称为当天的日期那种,比如今天就是041201.如果今天点过一次保存了,再点就提示说已经存在此文件。
以前我只会导出excel,但是弹出选择路径的对话框,这次不让弹出了,就直接保存到d:\data\041201。
怎么写?
我以前的导出excel代码如下,也是从网上粘的:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
XLApp: Variant;
Sheet: Variant;
WordApp, WordDoc, WordParagraph, WordRange, WordTable: Variant;
I, J: Integer;
SaveDialog: TSaveDialog;
pBookMark: TBookMark;
StrSaveFile: string;
IntFileType: Integer;
SltRec,SltCol: Integer;
ColIndex, RowIndex: Integer;
DBGridName:TDBGrid;
begin
DBGridName:=DBGrid2;
if DBGridName.DataSource.DataSet.IsEmpty then begin
MessageBox(Application.Handle, '没有任何数据,不能进行保存', '警告', MB_OK);
Abort;
end;
SaveDialog := TSaveDialog.Create(nil);
SaveDialog.Filter := 'Microsoft Excel 文件|*.xls|Microsoft Word 文件|*.doc';
SaveDialog.Execute;
IntFileType := SaveDialog.FilterIndex;
StrSaveFile := SaveDialog.FileName;
if Length(StrSaveFile) = 0 then Exit;
try
Screen.Cursor:=crHourGlass;
case IntFileType of
1: begin
try
XLApp :=CreateOleObject('Excel.Application');
XLApp.WorkBooks.Add(-4167);
XLApp.WorkBooks[1].WorkSheets[1].Name := '导出数据';
Sheet := XLApp.WorkBooks[1].WorkSheets['导出数据'];
J := 1;
except
MessageBox(GetActiveWindow,'无法调用Mircorsoft Excel! '+chr(13)+chr(10)+
'请检查是否安装了Mircorsoft Excel。','提示',MB_OK+MB_ICONINFORMATION);
Exit;
end;
with DBGridName.DataSource.DataSet do
begin
pBookMark := GetBookmark;
DisableControls;
for I:=0 to DBGridName.Columns.Count-1 do
begin
if not DBGridName.Columns[I].Visible then
Continue;
Sheet.Cells[J,I+1] := dbgridname.Columns[I].Title.Caption;
end;
Inc(J);
First;
while not Eof do begin
for I := 0 to DBGridName.Columns.Count-1 do begin
if not DBGridName.Columns[I].Visible then
Continue;
Sheet.Cells[J,I+1] := Trim(DBGridName.DataSource.DataSet.FieldByName(DBGridName.Columns[i].FieldName).AsString);
end;
Inc(J);
Next;
end;
GotoBookmark(pBookMark);
FreeBookmark(pBookMark);
EnableControls;
end;
XLApp.activeworkbook.saveas(StrSaveFile);
Application.ProcessMessages;
XLApp.Application.Quit;
要把dbgrid里的内容导出到excel,默认到D盘下data文件夹里。默认保存的excel名称为当天的日期那种,比如今天就是041201.如果今天点过一次保存了,再点就提示说已经存在此文件。
以前我只会导出excel,但是弹出选择路径的对话框,这次不让弹出了,就直接保存到d:\data\041201。
怎么写?
我以前的导出excel代码如下,也是从网上粘的:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
XLApp: Variant;
Sheet: Variant;
WordApp, WordDoc, WordParagraph, WordRange, WordTable: Variant;
I, J: Integer;
SaveDialog: TSaveDialog;
pBookMark: TBookMark;
StrSaveFile: string;
IntFileType: Integer;
SltRec,SltCol: Integer;
ColIndex, RowIndex: Integer;
DBGridName:TDBGrid;
begin
DBGridName:=DBGrid2;
if DBGridName.DataSource.DataSet.IsEmpty then begin
MessageBox(Application.Handle, '没有任何数据,不能进行保存', '警告', MB_OK);
Abort;
end;
SaveDialog := TSaveDialog.Create(nil);
SaveDialog.Filter := 'Microsoft Excel 文件|*.xls|Microsoft Word 文件|*.doc';
SaveDialog.Execute;
IntFileType := SaveDialog.FilterIndex;
StrSaveFile := SaveDialog.FileName;
if Length(StrSaveFile) = 0 then Exit;
try
Screen.Cursor:=crHourGlass;
case IntFileType of
1: begin
try
XLApp :=CreateOleObject('Excel.Application');
XLApp.WorkBooks.Add(-4167);
XLApp.WorkBooks[1].WorkSheets[1].Name := '导出数据';
Sheet := XLApp.WorkBooks[1].WorkSheets['导出数据'];
J := 1;
except
MessageBox(GetActiveWindow,'无法调用Mircorsoft Excel! '+chr(13)+chr(10)+
'请检查是否安装了Mircorsoft Excel。','提示',MB_OK+MB_ICONINFORMATION);
Exit;
end;
with DBGridName.DataSource.DataSet do
begin
pBookMark := GetBookmark;
DisableControls;
for I:=0 to DBGridName.Columns.Count-1 do
begin
if not DBGridName.Columns[I].Visible then
Continue;
Sheet.Cells[J,I+1] := dbgridname.Columns[I].Title.Caption;
end;
Inc(J);
First;
while not Eof do begin
for I := 0 to DBGridName.Columns.Count-1 do begin
if not DBGridName.Columns[I].Visible then
Continue;
Sheet.Cells[J,I+1] := Trim(DBGridName.DataSource.DataSet.FieldByName(DBGridName.Columns[i].FieldName).AsString);
end;
Inc(J);
Next;
end;
GotoBookmark(pBookMark);
FreeBookmark(pBookMark);
EnableControls;
end;
XLApp.activeworkbook.saveas(StrSaveFile);
Application.ProcessMessages;
XLApp.Application.Quit;