with ADOQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from [对账$]');        
      Open;
    end;
在open时出现如下提示:
‘对账$’不是一个有效名称。
急需解决!请大家帮忙!

解决方案 »

  1.   

    procedure TfrmMain.Button1Click(Sender: TObject);
    var i,j:integer;
        opendialog1:Topendialog;
        s0,s1,s2:string;
    begin
       try
            opendialog1:=Topendialog.Create(self);
            opendialog1.InitialDir:=ExtractFileDir(paramstr(0));//文件的打存放初始路径
         if opendialog1.Execute then
         begin
            Try
                ExcelApplication1.Connect;//EXCEL应用程序
            Except
                Messagebox(0,'Excel 可能没有安装!!','提示!',mb_Ok);
                exit;
            End;
                ExcelApplication1.Visible[0]:=false;
                ExcelApplication1.Caption:='Excel Application';
            try 
                excelapplication1.Workbooks.Open(opendialog1.FileName,
                 null,null,null,null,null,null,null,null,null,null,null,null,0);//打开指定的EXCEL 文件
            except
            begin
                ExcelApplication1.Disconnect;//出现异常情况时关闭
                ExcelApplication1.Quit;showmessage('请选择EXCEL电子表格!');
                exit;
            end;
            end;        ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
            //ExcelWorkbook1与Eexcelapplication1建立连接
            ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
           //Excelworksheet1与Excelworkbook1建立连接 
            //开始从EXCEL中取数,取完数后关闭EXCEL
            for i:=1 to 10000 do//最大取值10000
            begin
            if trim(excelworksheet1.cells.item[i+1,1])<>'' then
            begin
               s0:= excelworksheet1.cells.item[i+1,1];
               s1:= excelworksheet1.cells.item[i+1,2];
               s2:= excelworksheet1.cells.item[i+1,3];
                with qry do
                begin
                   close;
                   sql.Clear;
                   sql.add('insert into xsz(PZNO,PNO,TCount,inday)values('+
                    ''''+s0+''''+','+''''+s1+''''+','+''''+s2+''''+','+''''+datetostr(date)+''')');
                   ExecSQL;
                end;
            end 
            end;
             ExcelApplication1.Disconnect;
             ExcelApplication1.Quit;
       end;   with qryxsz do
       begin
          sql.Clear;
          sql.Add('select * from xsz order by PZNO,PNO,TCount,inday');
          open;
       end;
       for j:=0 to   grdxsz.Columns.Count do
       grdxsz.Columns[j].Width:=64;//缩小宽度
       messagebox(0,'文件已经导入数据库!','完成!',mb_ok);
    except
       ExcelApplication1.Disconnect;
       ExcelApplication1.Quit;
       exit;
      // messagebox(0,'文件已经导入数据库失败!','完成!',mb_iconError+mb_ok);
    end;
    end; try
           if qryxsz.RecordCount<1 then exit;
           CopyDbDataToExcel(Grdxsz);
        except
         //  messagebox(0,'请安装EXCEL软件,再使用本功能。','提示',mb_ok);
           exit;
        end;
      

  2.   

    你取的这个 对账 是一个不正确的工作簿名SQL.Add('select * from [对账$]'); 
    这里选择的是一工作簿名,你是否将Excel表名做为工作簿名了?打开你的Excel表,看看你的工作簿名是什么?
    如果是 对账 ,那肯定是没问题的
    如果不是,那就改为你的工作簿名~~~关键是要取得工作簿名你可以问一下高手们
    怎么取得Excel表的工作簿名
      

  3.   

    过路,学习中,受益非浅,感谢arong978!