看不懂你的意思!var i: Integer; s: String; slTmp: TStrings; begin //你自己的查询 ADOQuery1.Open; slTmp := TStringList.Create; try ADOQuery1.First; while not ADOQuery1.Eof do begin s := ''; for i:=0 to ADOQuery1.FieldCount-1 do s := s + ADOQuery1.Fields[i].AsString + ','; s := Copy(s, 0, Length(s)-1); slTmp.Add(s); ADOQuery1.Next; end; ADOQuery1.Close; finally slTmp.SaveToFile('TEMP.CSV'); FreeAndNil(slTmp); end; end;是需要这样吗?
我这里有一个程序,可参考?procedure TFrmQryO3ByTime.BitBtn3Click(Sender: TObject); Var MyExcel,myworkbook,mysheet,myrange,myrange1,myrange2:variant; Str,strRow,strYear,strMon,strDay:string; Arow,Acol,Num,i:integer; begin {Initialize the tile of the cexcel table} {Create new Excel Application} try MyExcel:=createoleobject('excel.application'); MyExcel.Visible :=true; myworkbook:=createoleobject('excel.sheet'); except application.messagebox('无法打开Xls文件,请确认已经安装excel.','',mb_ok+mb_iconstop); exit; end; try Screen.Cursor :=CrHourGlass; myworkbook:=MyExcel.workbooks.open('D:\O3MIS\export\O3AvgHour.xls'); MySheet:=myworkbook.worksheets['ccc信息表']; For i := 1 To 2000 do begin MySheet.Cells[i,1] := ''; MySheet.Cells[i,2] := ''; MySheet.Cells[i,3] := ''; MySheet.Cells[i,4] := ''; end; MySheet.Cells[1,1]:= '站点编号' ; MySheet.Cells[1,2]:= '日期' ; MySheet.Cells[1,3]:= '小时' ; MySheet.Cells[1,4]:= '浓度(ppm)' ; ADOQryYearO3.First; For i := 1 To ADOQryYearO3.RecordCount do begin MySheet.Cells[i+1,1]:= ADOQryYearO3.FieldByName('站点编号').AsString; MySheet.Cells[i+1,2]:= ADOQryYearO3.FieldByName('日期').AsString; MySheet.Cells[i+1,3]:= ADOQryYearO3.FieldByName('小时').AsString; MySheet.Cells[i+1,4]:= ADOQryYearO3.FieldByName('ccc').AsString; ADOQryYearO3.next; end; // MySheet.PrintOut; //2005-7-11 myworkbook.save; myworkbook.close; MyExcel.quit; MyExcel:=unassigned; Application.MessageBox(打印完成','打印', 32); except myworkbook.close; MyExcel.quit; end; Screen.Cursor :=CrDefault;end;
i: Integer;
s: String;
slTmp: TStrings;
begin
//你自己的查询
ADOQuery1.Open;
slTmp := TStringList.Create;
try
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
s := '';
for i:=0 to ADOQuery1.FieldCount-1 do
s := s + ADOQuery1.Fields[i].AsString + ',';
s := Copy(s, 0, Length(s)-1);
slTmp.Add(s); ADOQuery1.Next;
end;
ADOQuery1.Close;
finally
slTmp.SaveToFile('TEMP.CSV');
FreeAndNil(slTmp);
end;
end;是需要这样吗?
Var
MyExcel,myworkbook,mysheet,myrange,myrange1,myrange2:variant;
Str,strRow,strYear,strMon,strDay:string;
Arow,Acol,Num,i:integer;
begin
{Initialize the tile of the cexcel table}
{Create new Excel Application} try
MyExcel:=createoleobject('excel.application');
MyExcel.Visible :=true;
myworkbook:=createoleobject('excel.sheet');
except
application.messagebox('无法打开Xls文件,请确认已经安装excel.','',mb_ok+mb_iconstop);
exit;
end;
try
Screen.Cursor :=CrHourGlass;
myworkbook:=MyExcel.workbooks.open('D:\O3MIS\export\O3AvgHour.xls');
MySheet:=myworkbook.worksheets['ccc信息表'];
For i := 1 To 2000 do begin MySheet.Cells[i,1] := '';
MySheet.Cells[i,2] := '';
MySheet.Cells[i,3] := '';
MySheet.Cells[i,4] := ''; end;
MySheet.Cells[1,1]:= '站点编号' ;
MySheet.Cells[1,2]:= '日期' ;
MySheet.Cells[1,3]:= '小时' ;
MySheet.Cells[1,4]:= '浓度(ppm)' ; ADOQryYearO3.First;
For i := 1 To ADOQryYearO3.RecordCount do begin
MySheet.Cells[i+1,1]:= ADOQryYearO3.FieldByName('站点编号').AsString;
MySheet.Cells[i+1,2]:= ADOQryYearO3.FieldByName('日期').AsString;
MySheet.Cells[i+1,3]:= ADOQryYearO3.FieldByName('小时').AsString;
MySheet.Cells[i+1,4]:= ADOQryYearO3.FieldByName('ccc').AsString;
ADOQryYearO3.next;
end;
// MySheet.PrintOut; //2005-7-11
myworkbook.save;
myworkbook.close;
MyExcel.quit;
MyExcel:=unassigned;
Application.MessageBox(打印完成','打印', 32);
except
myworkbook.close;
MyExcel.quit;
end; Screen.Cursor :=CrDefault;end;