数据的导出(50分)

  • 主题发起人 主题发起人 xiaoming99129
  • 开始时间 开始时间
X

xiaoming99129

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将DBGRID的内容导出到EXEL,请高手帮我解答一下,谢谢[:D]
 
这个演示代码很多的,自己找找就行了。
 
http://www.delphifans.com
http://www.delphibox.com
http://www.2ccc.com
上面都有實例說明或使用方法其代碼等。
 
用dbgrideh
 
procedure Tf0rm.botton1Click(Sender: TObject);
var
i: Integer;
ExcelApp, ASheet: Variant;
AppPath: String;
begin
AppPath := ExtractFilePath(ParamStr(0));
try
ExcelApp := CreateOleObject('Excel.Application'); //返回类型:IDispatch
except //建立连接失败
WarningMe('Connected to Excel failed!');
Exit;
end;
Application.ProcessMessages;
try //建立 Excel 连接成功
ExcelApp.Visible := False;

ExcelApp.WorkBooks.Open(AppPath+'wwww.xls');
Application.ProcessMessages;
ASheet := ExcelApp.WorkBooks[1].WorkSheets[1];
ASheet.Activate;
i := 1;
//DBGrid中的数据保存到Excel中
aqryExec.First;
while not aqryExec.Eof do
begin
ASheet.Cells.Item[i,0] := aqryExec.FieldByName('ZID').Value;
ASheet.Cells.Item[i,1] := aqryExec.FieldByName('Name').Value;
ASheet.Cells.Item[i,2] := aqryExec.FieldByName('address').Value;
ASheet.Cells.Item[i,3] := aqryExec.FieldByName('data').Value;
ASheet.Cells.Item[i,4] := aqryExec.FieldByName('length').Value;
Inc(i);
aqryExec.Next;
end;
aqryExec.First;
end
except
WarningMe('Save to Excel failed!');
Exit;
end;
ExcelApp.Quit;
end;
 
原始方法一则,仅供参考
procedure ExportToExcel(Const ADBGrid: TDBGrid);
var
i, j: Integer;
tmpExcelApp: TExcelApplication;
tmpExcelWorkbook: TExcelWorkbook;
tmpExcelWorksheet: TExcelWorksheet;
begin
tmpExcelApp := TExcelApplication.Create(nil);
with tmpExcelApp do
begin
Disconnect;
Visible[0] := True;
SheetsInNewWorkbook[0] := 1;
Workbooks.Add(Null, 1);
end;

tmpExcelWorkbook := TExcelWorkbook.Create(nil);
tmpExcelWorkbook.Disconnect;
tmpExcelWorkbook.ConnectTo(_Workbook(tmpExcelApp.Workbooks[1]));

tmpExcelWorksheet := TExcelWorksheet.Create(nil);
with tmpExcelWorksheet do
begin
Disconnect;
ConnectTo(tmpExcelApp.Worksheets[1] As _Worksheet);
for i := 1 to ADBGrid.FieldCount do
Cells.Item[1, i] := ADBGrid.Columns[i-1].Title.Caption;

ADBGrid.DataSource.DataSet.First;
for j := 1 to ADBGrid.DataSource.DataSet.RecordCount do
begin
for i := 1 to ADBGrid.FieldCount do
Cells.Item[j+1, i] := ADBGrid.DataSource.DataSet.FieldValues[ADBGrid.Columns[i-1].FieldName];
ADBGrid.DataSource.DataSet.Next;
end;
end;

tmpExcelWorksheet.Disconnect;
tmpExcelWorkbook.Disconnect;
tmpExcelApp.Disconnect;
FreeAndNil(tmpExcelWorksheet);
FreeAndNil(tmpExcelWorkbook);
FreeAndNil(tmpExcelApp);
end;
 
http://www5.skycn.com/soft/29751.html
QQ:292044357
 
后退
顶部