var
v:variant;
sheet:variant;
i,j:integer;
begin
v:=createoleobject('Excel.Application');
v.visible:=true;
v.workbooks.add(-4167); 
v.workbooks[1].sheets[1].name:='零次户';
sheet:=v.workbooks[1].sheets['零次户'];
for i:=0 to query1.RecordCount do
begin
for j:=0 to query1.RecordCount do
begin
v.workbooks[1].sheets[1].cell[1,1]:=query1.FieldByName('month_id').AsString;
end;
end;
end;

解决方案 »

  1.   

    for i:=0 to query1.RecordCount-1 do
      

  2.   

    这样循环读取
    first;
    while not eof do
    begin
    //
    next;
    end;
      

  3.   

    var
    v:variant;
    sheet:variant;
    i,j:integer;
    begin
    v:=createoleobject('Excel.Application');//创建OLE对象
    v.visible:=true;
    v.workbooks.add(-4167); //添加工作表
    v.workbooks[1].sheets[1].name:='零次户';
    sheet:=v.workbooks[1].sheets['零次户'];
    for i:=0 to query1.RecordCount-1 do
    begin
    for j:=0 to query1.RecordCount do
    begin
    v.workbooks[1].sheets[1].cell[i,j]:=query1.FieldByName('month_id').AsString;
    end;
    end;
    end;
    这样也不行啊????
      

  4.   

    改成cells[i,j]也不行啊?提示ole错误800A03EC怎么办啊。急啊!哥哥!姐姐!!
      

  5.   

    var
    v:variant;
    sheet:variant;
    i,j:integer;
    begin
    v:=createoleobject('Excel.Application');//创建OLE对象
    v.visible:=true;
    v.workbooks.add(-4167); //添加工作表
    v.workbooks[1].sheets[1].name:='零次户';
    sheet:=v.workbooks[1].sheets['零次户'];
    for i:=0 to query1.RecordCount-1 do
    begin
    for j:=0 to query1.RecordCount do
    begin
    v.workbooks[1].sheets[1].cell[i,j]:=query1.FieldByName('month_id').AsString;
    end;
    end;
    end;
    这样也不行啊????两个Recordcount都要-1的嘛~~~~~~~~~~~ ~_~
      

  6.   

    var
      v: variant;
      sheet: variant;
      i, j: integer;
    begin
      v := CreateOleObject('Excel.Application'); //创建OLE对象
      v.visible := true;
      v.WorkBooks.Add; //添加工作表
      v.WorkBooks[1].Sheets[1].name := '零次户'';
      v.WorkBooks[1].Sheets[1].activate;
      if not adoQuery1.Active then
        adoQuery1.Open;
      adoQuery1.First;
      for i := 1 to adoQuery1.RecordCount do
      begin
        for j := 1 to adoQuery1.RecordCount do
          v.WorkBooks[1].Sheets[1].Cells[i, j].Value := adoQuery1.FieldByName('grp_id').AsString;
        adoQuery1.Next;
      end;
    end;delphi7+office2003下测试通过,另外你这里的两个循环好象没必要