CSV输出问题(在线等)

marydan 2006-10-17 04:29:41
求高手CSV输出问题:
如何把数据库里的数据用EXCEL文件形式保存下来.
只知道DEIPHL有STRINGLIST,和TOSAVEFILE方法.
如何把数据放到LIST里面循环输出呢
谢谢了!!



字段为A, B, C
...全文
164 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gobiz 2006-10-17
  • 打赏
  • 举报
回复
楼上的使用OLE方式,如果数据量大的话会很慢的,如果想将RecordSet导出到Excel文件,建议使用XLSReadWriteII组件,速度和OLE简直就是两个档次。
suzhixia 2006-10-17
  • 打赏
  • 举报
回复
我这里有一个程序,可参考?

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;
gobiz 2006-10-17
  • 打赏
  • 举报
回复
看不懂你的意思!

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;

是需要这样吗?

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧