我是想在激活BUTTON时,调用以下从DBGRID中导出为EXCEL文件的程序;
DM是我放数据模块的名称。在程序运行前,它已经创建了,
我试使用过:
DM.OutToExcel(DBGrid: TDBGrid; Fn: string; Vis: Boolean);
DM.OutToExcel(DBGrid; Fn; Vis);
DM.OutToExcel(DBGrid);DM.OutToExcel(Sender : TObjcet;DBGrid: TDBGrid; Fn: string; Vis: Boolean);
DM.OutToExcel(Sender;DBGrid; Fn; Vis);
DM.OutToExcel(Sender);
我在全局变量中加了这个句:
public
//自定义全局变量User
procedure OutToExcel(DBGrid: TDBGrid; Fn: string; Vis: Boolean);
我在什么时候激活此程序,怎么调用他?procedure TDM.OutToExcel(DBGrid: TDBGrid; Fn: string; Vis: Boolean);
var
ExcelApp: Variant;
i, j: integer;
begin
try
ExcelApp := CreateOleObject('Excel.Application');
except
MessageDlg('系统中的Microsoft Excel软件没有安装或安装不正确!', mtError,[mbOK],0);
exit;
end;
ExcelApp.visible := vis;
try
excelapp.caption := '应用程序调用 Microsoft Excel';
ExcelApp.WorkBooks.Add;
//写入标题行
for i := 1 to DBGrid.Columns.Count do //sDataSet.Fields.Count do
begin
//if DBGrid.Columns[i - 1].Visible then
ExcelApp.Cells[1, i].Value := (DBGrid.Columns[i - 1].Title.Caption);
end;
DBGrid.DataSource.DataSet.First;
i := 2;
while not DBGrid.DataSource.DataSet.Eof do
begin
for j := 0 to DBGrid.Columns.Count - 1 do //sDataSet.Fields.Count-1 do
begin
//if DBGrid.Columns[j].Visible then
ExcelApp.Cells[i, j + 1].Value := DBGrid.DataSource.DataSet.FieldByName(DBGrid.Columns[j].FieldName).AsString; //sDataSet.Fields[j].AsString;
end;
DBGrid.DataSource.DataSet.Next;
i := i + 1;
end;
DBGrid.DataSource.DataSet.First;
if MessageDlg('数据导出完成.确认保存吗?', mtInformation,[mbYes,mbNo],0) = mrYes then
begin
if not ExcelApp.ActiveWorkBook.Saved then
ExcelApp.ActiveWorkBook.SaveAs(fn);
end
else begin
ExcelApp.ActiveWorkBook.Saved := True; //不保存
end;
finally
Excelapp.Disconnect;
Excelapp.Quit;
Excelapp.Free;
end;
end;
DM是我放数据模块的名称。在程序运行前,它已经创建了,
我试使用过:
DM.OutToExcel(DBGrid: TDBGrid; Fn: string; Vis: Boolean);
DM.OutToExcel(DBGrid; Fn; Vis);
DM.OutToExcel(DBGrid);DM.OutToExcel(Sender : TObjcet;DBGrid: TDBGrid; Fn: string; Vis: Boolean);
DM.OutToExcel(Sender;DBGrid; Fn; Vis);
DM.OutToExcel(Sender);
我在全局变量中加了这个句:
public
//自定义全局变量User
procedure OutToExcel(DBGrid: TDBGrid; Fn: string; Vis: Boolean);
我在什么时候激活此程序,怎么调用他?procedure TDM.OutToExcel(DBGrid: TDBGrid; Fn: string; Vis: Boolean);
var
ExcelApp: Variant;
i, j: integer;
begin
try
ExcelApp := CreateOleObject('Excel.Application');
except
MessageDlg('系统中的Microsoft Excel软件没有安装或安装不正确!', mtError,[mbOK],0);
exit;
end;
ExcelApp.visible := vis;
try
excelapp.caption := '应用程序调用 Microsoft Excel';
ExcelApp.WorkBooks.Add;
//写入标题行
for i := 1 to DBGrid.Columns.Count do //sDataSet.Fields.Count do
begin
//if DBGrid.Columns[i - 1].Visible then
ExcelApp.Cells[1, i].Value := (DBGrid.Columns[i - 1].Title.Caption);
end;
DBGrid.DataSource.DataSet.First;
i := 2;
while not DBGrid.DataSource.DataSet.Eof do
begin
for j := 0 to DBGrid.Columns.Count - 1 do //sDataSet.Fields.Count-1 do
begin
//if DBGrid.Columns[j].Visible then
ExcelApp.Cells[i, j + 1].Value := DBGrid.DataSource.DataSet.FieldByName(DBGrid.Columns[j].FieldName).AsString; //sDataSet.Fields[j].AsString;
end;
DBGrid.DataSource.DataSet.Next;
i := i + 1;
end;
DBGrid.DataSource.DataSet.First;
if MessageDlg('数据导出完成.确认保存吗?', mtInformation,[mbYes,mbNo],0) = mrYes then
begin
if not ExcelApp.ActiveWorkBook.Saved then
ExcelApp.ActiveWorkBook.SaveAs(fn);
end
else begin
ExcelApp.ActiveWorkBook.Saved := True; //不保存
end;
finally
Excelapp.Disconnect;
Excelapp.Quit;
Excelapp.Free;
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货