主题:各位一个简单的问题请问了 (高分)
kkk731
[专家分:0] 发布于 2006-04-29 14:08:00
如何把DBGrid中的数据导出到Excel中 谢谢了各位
代码怎么写 用什么控件
回复列表 (共4个回复)
沙发
hao70345 [专家分:190] 发布于 2006-04-29 15:13:00
uses
ComObj,Excel2000, ExtCtrls;
procedure CopyDbDataToExcel(Target:TswDBGrid;Title:String;Day:String);
var
iCount,jCount:Integer;
XLApp:Variant;
Sheet: Variant;
i:Integer;
temp:String;
Const
HRang:array[1..23] of string=('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W');
// Target1:TDBGrid;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
//籵徹ole斐膘Excel勤砓
Try
XLApp := CreateOleObject('Excel.Application');
Except
Screen.Cursor := crDefault;
Exit;
end;
//xlApp.WorkBooks.open(ExtractFilePath(Application.ExeName)+'Pay.xls');
XLApp.WorkBooks.Add[XLWBatWorksheet];
XLApp.WorkBooks[1].WorkSheets[1].Name := 'Sheet1';
Sheet := XLApp.Workbooks[1].WorkSheets['Sheet1'] ;
if Not Target.DataSource.DataSet.Active then
begin
Screen.Cursor := crDefault;
Exit;
end;
Sheet.range['B1'].value:=Title;
Sheet.range['B1'].Font.Size:=18;
Sheet.range['F1'].value:=Day;
Target.DataSource.DataSet.first;
for iCount := 0 to Target.Columns.Count -1 do
begin
Sheet.cells[2 ,iCount+1] := Target.Columns.Items[iCount].Title.Caption;
end;
jCount:=1;
While Not Target.DataSource.DataSet.Eof do
begin
for iCount := 0 to Target.Columns.Count -1 do
begin
Sheet.cells[jCount+2 ,iCount+1] := Target.Columns.Items[iCount].Field.DisplayText;
end;
Inc(jCount);
Target.DataSource.DataSet.Next;
end;
Sheet.Range['A2:'+hrang[iCount]+'1'].Font.Bold := True;
Sheet.Range['A2:'+hrang[iCount]+IntToStr(jCount+1)].Font.Name:='冼极';
Sheet.Range['A2:'+hrang[iCount]+IntToStr(jCount+1)].Font.Size:=9;
Sheet.Range['A2:'+hrang[iCount]+IntToStr(jCount+1)].Borders.LineStyle:=1;
Sheet.Range['A2:'+hrang[iCount]+IntToStr(jCount+1)].Columns.AutoFit;
Sheet.Range['A2:'+hrang[iCount]+IntToStr(jCount+1)].HorizontalAlignment:=xlVAlignCenter;
Sheet.Range['A2:'+hrang[iCount]+IntToStr(jCount+1)].AddIndent := True;
// Sheet.PageSetup.Orientation := xlLandscape;
XlApp.Visible := True;
Screen.Cursor := crDefault;
end;
板凳
hao70345 [专家分:190] 发布于 2006-04-29 15:13:00
提供多一个例子给你参考,。DELPHI共同交流学习…………
function TPubData.OutPutDBF(Src:TDBDataSet;SrcGrid:TDBGrid; TrgName: string): Boolean;
var
elapp,workbook:variant;
xelfileName: string;
I,J: integer;
begin
xelfilename :='c:\temp\'+TrgName+'.xls';
try
elapp :=CreateOLEObject('Excel.Application');//;
workbook := CreateOLEObject('Excel.Sheet');
workbook := Elapp.workbooks.add;
For I := 0 to Src.FieldCount - 2 do
elapp.cells(1,I+1) := SrcGrid.Columns[I].Title.Caption;
With Src do
begin
DisableControls;
First;
J := 2;
While not eof do
begin
For I := 1 to Src.FieldCount do
elapp.cells(J,I) := Fields[I-1].AsString;
Next;
Inc(J);
end;
First;
EnableControls;
end;
workbook.saveas(xelfilename);
workbook.close;
elapp.Quit;
elapp := unassigned;
except
ShowMessage('您的机器里未安装Microsoft Excel');
exit;
end;
ShowMessage(MSG_SAVE_DOON)
end;
3 楼
kkk731 [专家分:0] 发布于 2006-04-29 17:16:00
en 谢谢你啊我要是有什么不明白的可以问你吗
我看着这么多不知道从什么地方下手啊
这么长啊
4 楼
kkk731 [专家分:0] 发布于 2006-04-29 17:20:00
能告诉我你的qq号吗
我来回复