关于数据导到EXCEL表中怎么实现 DBGRID中显示的数据怎么导入到EXCEL表中,再另外加上表头。请教高手。还有,我在笔记本上编的,分辨率是1024*768 到一般800*600的商用机器上时候,显示不合适,什么方法可以简单解决。谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DBGRID中显示的数据导入到EXCEL表:var i, j: Integer; MyExcel, MySheet: Variant;begin try MyExcel := CreateOleObject('Excel.Application'); MyExcel.Visible := True; MyExcel.WorkBooks.Add; MyExcel.WorkSheets[1].Activate; MyExcel.WorkBooks[1].WorkSheets[1].Name := Title; MySheet := MyExcel.WorkBooks[1].WorkSheets[1]; for i := 0 to Str.RowCount - 1 do for j := 0 to Str.ColCount - 1 do begin MySheet.Cells[i + 1,j + 1] := Str.Cells[j,i]; end;end;分辨率转换的问题好像有点复杂。 上面的函数加上这个做第一行:procedure ReportToExcel(Str:TStringGrid;Title:String); 你得用取其DataSet数据用循环一条一条写进去太慢;推荐用DBGridEh,其有SaveDBGridEhToExportFile方法,一下子就可以导出去且支持多种形式 procedure TfrmEhlib.Button1Click(Sender: TObject); procedure DBGridInFoToExcel(FileName, TitleCaption: string; MakeDataSource: TDataSource; makeDBGridEh: TDBGrid); var xlApp, xlSheet, szValue: Variant; ARow, iLoop: word; begin xlApp := CreateOleObject('Excel.Application'); try xlSheet := CreateOleObject('Excel.Sheet'); xlSheet := xlApp.WorkBooks.Add; xlSheet.WorkSheets[1].Cells[1,1] := TitleCaption; for iLoop := 0 to makeDBGridEh.Columns.Count - 1 do xlSheet.WorkSheets[1].Cells[2, iLoop+1] := makeDBGridEh.Columns[iLoop].Title.Caption; // 数据 ARow := 3; with MakeDataSource.DataSet do begin DisableControls; First; while not Eof do begin for iLoop := 0 to Fields.Count - 1 do begin szValue := Fields[iLoop].Value; xlSheet.WorkSheets[1].Cells[ARow, iLoop+1] := szValue; end; Inc(ARow); Next; end; First; EnableControls; end; try xlSheet.SaveAs(FileName); Application.MessageBox('导出完毕!', '提示', MB_IconExclamation); finally xlSheet.Close; xlApp.Quit; xlApp := UnAssigned; end; except MessageBox(handle, '本机没有安装Excel.', '提示',MB_IconExclamation); end; end;begin DBGridInFoToExcel('d:\test.xls', 'test xls', dsStore, dgStore)end; 你得用取其DataSet数据用循环一条一条写进去太慢;推荐用DBGridEh,其有SaveDBGridEhToExportFile方法,一下子就可以导出去且支持多种形式 能不能再讲的详细一点,最好有个例子什么的,谢谢 谢谢秋风.太好了,我整理了一下可以用.加分给他吧.procedure TForm1.Button1Click(Sender: TObject); procedure DBGridInFoToExcel(FileName, TitleCaption: string; DataSource1: TDataSource; DBGridEh1: TDBGrideh); var xlApp, xlSheet, szValue: Variant; ARow, iLoop: word; begin xlApp := CreateOleObject( 'Excel.Application' );; try xlSheet := CreateOleObject('Excel.Sheet'); xlSheet := xlApp.WorkBooks.Add; xlSheet.WorkSheets[1].Cells[1,1] := TitleCaption; for iLoop := 0 to DBGridEh1.Columns.Count - 1 do xlSheet.WorkSheets[1].Cells[2, iLoop+1] := DBGridEh1.Columns[iLoop].Title.Caption; // 数据 ARow := 3; with DataSource1.DataSet do begin DisableControls; First; while not Eof do begin for iLoop := 0 to Fields.Count - 1 do begin szValue := Fields[iLoop].Value; xlSheet.WorkSheets[1].Cells[ARow, iLoop+1] := szValue; end; Inc(ARow); Next; end; First; EnableControls; end; try xlSheet.SaveAs(FileName); Application.MessageBox('导出完毕!', '提示', MB_IconExclamation); finally xlSheet.Close; xlApp.Quit; xlApp := UnAssigned; end; except MessageBox(handle, '本机没有安装Excel.', '提示',MB_IconExclamation); end; end;begin DBGridInFoToExcel('d:\test.xls', 'test xls', DataSource1, DBGridEh1);end; 根本不用OLEObject这么麻烦!可以把Excel文件当成一个数据库,而Excel文件中的每一个工作表则是库中的一个Table。 借着前面楼主的问题再问一个,微软的Jet数据驱动引擎应该是可以支持excel表格存取的,不过为什么我做不了,哪位清楚给个解释 clientdataset主从表联接出错 帮帮我呀!!请问大家怎样将一个文件夹的文件覆盖另一个文件夹的文件了。 运行时显示找不到dcu文件怎么办? 一个关于TObjectList对象的问题 怎样返回一个日期中的月份? 经典代码下载 关于TMediaPlayer播放.Dat文件的问题! 如何能令到打印机在打完内容后,不走纸呢?(令我状、头痛一星期的问题) 如何用Delphi编制一个支持服务器认证的Smtp邮件程序? 初级问题,急急急 很简单也给100分,Hook.DLL,PB调用,SendMessage的问题。 TO hujinger(克沙)
i, j: Integer;
MyExcel, MySheet: Variant;
begin
try
MyExcel := CreateOleObject('Excel.Application');
MyExcel.Visible := True;
MyExcel.WorkBooks.Add;
MyExcel.WorkSheets[1].Activate;
MyExcel.WorkBooks[1].WorkSheets[1].Name := Title;
MySheet := MyExcel.WorkBooks[1].WorkSheets[1];
for i := 0 to Str.RowCount - 1 do
for j := 0 to Str.ColCount - 1 do
begin
MySheet.Cells[i + 1,j + 1] := Str.Cells[j,i];
end;
end;分辨率转换的问题好像有点复杂。
procedure DBGridInFoToExcel(FileName, TitleCaption: string;
MakeDataSource: TDataSource; makeDBGridEh: TDBGrid);
var
xlApp, xlSheet, szValue: Variant;
ARow, iLoop: word;
begin
xlApp := CreateOleObject('Excel.Application');
try
xlSheet := CreateOleObject('Excel.Sheet');
xlSheet := xlApp.WorkBooks.Add; xlSheet.WorkSheets[1].Cells[1,1] := TitleCaption;
for iLoop := 0 to makeDBGridEh.Columns.Count - 1 do
xlSheet.WorkSheets[1].Cells[2, iLoop+1] := makeDBGridEh.Columns[iLoop].Title.Caption; // 数据
ARow := 3;
with MakeDataSource.DataSet do
begin
DisableControls;
First;
while not Eof do
begin
for iLoop := 0 to Fields.Count - 1 do
begin
szValue := Fields[iLoop].Value;
xlSheet.WorkSheets[1].Cells[ARow, iLoop+1] := szValue;
end;
Inc(ARow);
Next;
end;
First;
EnableControls;
end; try
xlSheet.SaveAs(FileName);
Application.MessageBox('导出完毕!', '提示', MB_IconExclamation);
finally
xlSheet.Close;
xlApp.Quit;
xlApp := UnAssigned;
end;
except
MessageBox(handle, '本机没有安装Excel.', '提示',MB_IconExclamation);
end;
end;
begin
DBGridInFoToExcel('d:\test.xls', 'test xls', dsStore, dgStore)
end;
能不能再讲的详细一点,最好有个例子什么的,谢谢
procedure DBGridInFoToExcel(FileName, TitleCaption: string;
DataSource1: TDataSource; DBGridEh1: TDBGrideh);
var
xlApp, xlSheet, szValue: Variant;
ARow, iLoop: word;
begin
xlApp := CreateOleObject( 'Excel.Application' );;
try
xlSheet := CreateOleObject('Excel.Sheet');
xlSheet := xlApp.WorkBooks.Add; xlSheet.WorkSheets[1].Cells[1,1] := TitleCaption;
for iLoop := 0 to DBGridEh1.Columns.Count - 1 do
xlSheet.WorkSheets[1].Cells[2, iLoop+1] := DBGridEh1.Columns[iLoop].Title.Caption; // 数据
ARow := 3;
with DataSource1.DataSet do
begin
DisableControls;
First;
while not Eof do
begin
for iLoop := 0 to Fields.Count - 1 do
begin
szValue := Fields[iLoop].Value;
xlSheet.WorkSheets[1].Cells[ARow, iLoop+1] := szValue;
end;
Inc(ARow);
Next;
end;
First;
EnableControls;
end; try
xlSheet.SaveAs(FileName);
Application.MessageBox('导出完毕!', '提示', MB_IconExclamation);
finally
xlSheet.Close;
xlApp.Quit;
xlApp := UnAssigned;
end;
except
MessageBox(handle, '本机没有安装Excel.', '提示',MB_IconExclamation);
end;
end;
begin
DBGridInFoToExcel('d:\test.xls', 'test xls', DataSource1, DBGridEh1);
end;