我需要把ACCESS的数据转到EXCEL中,一个表转到该EXCEL的一个Sheet中,没有格式要求,我用以下语句
Select * INTO [excel 8.0;database=' + xlspath + '].[sheet1$] from jcd
Select * INTO [excel 8.0;database=' + xlspath + '].[sheet2$] from jsd
……运行的时候如果是已经存在的sheet,则提示‘表sheet1已存在’,转换失败;
如果是不存在的sheet,则提示'Sheet4不是一个有效名称',转换失败;

解决方案 »

  1.   

    试试这个delphi函数(修改一下)
    procedure TCustomCommonRoutine.SaveToExcel(FDataSet: array of TDataSet;
      Title, SubTitle, FileName: string);
    var
      i, j: Integer;
      sList: TStringList;
    begin
      sList := TStringList.Create;
      sList.Clear;
      if length(FDataSet) > 0 then
      begin
        sList.Add('<HTML>');
        sList.Add(#9 + '<HEAD>');
        sList.Add(#9 +
          '<meta http-equiv="content-type" content="text/html; charset=gb2312">');
        sList.Add(#9#9 + '<H2 align="center">');
        sList.Add(Title);
        sList.Add(#9#9 + '</H2>');
        sList.Add(#9#9 + '<H3 align="center">');
        sList.Add(SubTitle);
        sList.Add(#9#9 + '</H3>');
        sList.Add(#9 + '</HEAD>');
        sList.Add('<body>');
        sList.Add('<table width="100%" border="1">');
        for i := 0 to length(FDataSet) - 1 do
        begin
          with FDataSet[i] do
          begin
            sList.Add(#9 + '<tr>');
            for j := 0 to FDataSet[i].FieldCount - 1 do
            begin
              if FDataSet[i].Fields[j].Visible = true then
              begin
                sList.Add(#9#9 + '<td>');
                sList.Add(#9#9 + FDataSet[i].Fields[j].DisplayName);
                sList.Add(#9#9 + '</td>');
              end;
            end;
            sList.Add(#9 + '</tr>');
            if FDataSet[i].RecordCount > 0 then
            begin
              FDataSet[i].First;
              while not FDataSet[i].Eof do
              begin
                sList.Add(#9 + '<tr>');
                for j := 0 to FDataSet[i].FieldCount - 1 do
                begin
                  if fDataSet[i].Fields[j].Visible = true then
                  begin
                    sList.Add(#9#9 + '<td>');
                    sList.Add(#9#9 + trim(FDataSet[i].Fields[j].AsString));
                    sList.Add(#9#9 + '</td>');
                  end;
                end;
                sList.Add(#9 + '</tr>');
                FDataSet[i].next;
              end;
            end
            else
            begin
              sList.Add(#9 + '<tr>');
              for j := 0 to FDataSet[i].FieldCount - 1 do
              begin
                if fDataSet[i].Fields[j].Visible = true then
                begin
                  sList.Add(#9#9 + '<td>');
                  sList.Add(#9#9 + '');
                  sList.Add(#9#9 + '</td>');
                end;
              end;
              sList.Add(#9 + '</tr>');
            end;
          end;
        end;
        sList.Add('</table>');
        sList.Add('</body>');
        sList.SaveToFile(FileName+'.xls');
      end;
      sList.Free;
    end;
      

  2.   

    我要的是一次性批量转移数据到excel,而不是逐条转移数据。