求DBGridEh 导出excel函数

wgxis 2009-04-29 02:58:40
1、自己用过,确实没问题的,可在office2000、office2003的电脑上正常导出
2、有弹出保存,可选择保存位置
3、带进度条
请教了,最好是那种函数调用的形势,谢谢
...全文
218 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chailang 2009-05-04
  • 打赏
  • 举报
回复
dlgSave1.Execute;
if dlgSave1.FileName = '' then
Exit
else
SaveDBGridEhToExportFile(TDBGridEhExportAsText, dbgrdh1,
dlgSave1.FileName, True);

引用EhlibADO, EhLibBDE单元即可
fx270981245 2009-04-30
  • 打赏
  • 举报
回复
up
hiboys 2009-04-30
  • 打赏
  • 举报
回复
DBGridEh中有专门的控件支持。我们项目用过的
关联到dbgrideh上即可。


wgxis 2009-04-29
  • 打赏
  • 举报
回复
继续问
delphi_911 2009-04-29
  • 打赏
  • 举报
回复
最好用数据流,要不然数据量稍大时导出速度会很慢;
如果是绑定数据源的话从数据源直接导出也是不错的选择。
Rainy_mimi 2009-04-29
  • 打赏
  • 举报
回复
進度條自己+個控件就OK了啊
ProgressBar1


ProgressBar1.Min := 0;
ProgressBar1.Max := ADtSet.RecordCount;
...
ProgressBar1.Position := i; //當前 ADtSet的循環變量值
Rainy_mimi 2009-04-29
  • 打赏
  • 举报
回复
procedure TDataManageFrm.MailDataExport(ADtset: TDtset;
ADBGrid: TDBGrid);
var
ExcelApp: Variant;
SaveFileDialog: TSaveDialog;
SaveToFile: string;
i, j: integer;
begin
if (not ADtset.Active) or (ADtset.RecordCount = 0) then Exit;
SaveToFile := '';
SaveFileDialog := TSaveDialog.Create(Application);
SaveFileDialog.Filter := '*.xls|*.xls';
if SaveFileDialog.Execute then
SaveToFile := SaveFileDialog.FileName;
if SaveToFile = '' then
exit;
screen.Cursor := crHourGlass;
try
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets[1].Activate;
ExcelApp.ActiveSheet.Rows[1].RowHeight := 30;

for j := 0 to ADtset.FieldCount - 1 do
begin
ExcelApp.Cells[1, j + 1].Value := ADBGrid.Columns[j].Title.Caption;
end;
ADtset.First;
for i := 0 to ADtset.RecordCount - 1 do
begin
for j := 0 to ADtset.FieldCount - 1 do
begin
ExcelApp.Cells[i + 2, j + 1].Value := '''' + ADtset.FieldByName(ADBGrid.Columns[j].FieldName).AsString;
ExcelApp.ActiveSheet.Columns[j + 1].ColumnWidth := 15;
end;
ADtset.Next;
end;
finally
try
ExcelApp.ActiveWorkBook.SaveAs(SaveToFile);
ExcelApp.ActiveWorkBook.saved := true;
ExcelApp.visible := true;
except on e: exception do
begin
MessageDlg(e.Message, mtInformation, [mbok], 0);
ExcelApp.ActiveWorkBook.saved := false;
end;
end;
end;
screen.Cursor := CrDefault;
end;

2,497

社区成员

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

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