如题

解决方案 »

  1.   

    什么数据库?
    Microsoft OLE DB Provider for SQL Server 错误 '80040e31' 超时已过期 /Expert/reply.asp,行105
      

  2.   

    sql server 2000,必须是用程序控制的,交给用户使用。
      

  3.   

    var                      //uses comobj
      pc_i:integer;
      xlapp,sheet: variant;
      WBK: OleVariant;
    begin
      xlapp := createoleobject('excel.application');
      if Trim(Edit1.Text)='' then
      begin
        Application.MessageBox('文件名不能为空','警告',MB_OK);
        Exit;
      end;
      WBK := xlapp.workbooks.Open(Edit1.Text);
      sheet := xlapp.workbooks[1].worksheets['sheet1'];
      pc_i:=1;
      Edit2.Text := sheet.cells[pc_i,1];     //写入的话用 sheet.cells[pc_i,1] := Edit2.Text;
      WBK.Close(SaveChanges := True);
      xlapp.Quit;
    end;
    这是读出Excel文件的代码,读出后你写到txt文件中就好了
      

  4.   

    你用的什么数据库?如果是用SQL Server我知道怎样手动导入!
      

  5.   

    1 直接调用bcp和dts服务
    2 用sql语句
    INSERT INTO table1
    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    3 在delphi中利用office vba函数写循环
      

  6.   

    新建一项目,从控件栏servers中分别选取控件:excelapplication、excelworkbook1、excelworksheet,放到主窗体from1中,并加入stringgrid、按钮procedure TForm1.Button1Click(Sender: TObject);
    var i,j:integer;
    begin
    opendialog1.InitialDir:=ExtractFileDir(paramstr(0));//文件的打存放初始路径
    opendialog1.Execute;
    Try
    ExcelApplication1.Connect;//EXCEL应用程序
    Except
    MessageDlg('Excel may not be installed',mtError, [mbOk], 0);
    Abort;
    End;
    ExcelApplication1.Visible[0]:=True;
    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中取数,放到stringgrid1中,取完数后关闭EXCEL
    for i:=1 to 1000 do//最大取值1000
    for j:=1 to 6 do
    begin
    if trim(excelworksheet1.cells.item[i+1,1])<>'' then
    begin
    stringgrid1.rowCount:=i+1;
    stringgrid1.Cells[j,i]:=ExcelWorksheet1.Cells.Item[i+1,j];
    end
    else
    begin
    ExcelApplication1.Disconnect;
    ExcelApplication1.Quit;
    //将第一条数据赋给编辑框
    exit;
    end;
    end;
    end;
      

  7.   

    谢谢 firetoucher(风焱)和ljmanage(过客) ljmanage(过客) 的方法我知道,不过不想用,过于繁琐。我要找的是最简单的解决方案,最好是和从资料库导出到excel一样简单:)firetoucher(风焱),能否再解释清楚点吗?怎样调用bcp和dts,vba我也没有用过
      

  8.   

    去下载一个EXCEL读写控件(xlsreadwriteII),直接就可以把EXCEL读入到GRID里面了
      

  9.   

    怎样使用你看看sql的帮助,有中文的,太多了:)
    1 调用你可以直接用xp_cmdshell运行bcp dtsrun等
    2 office的vba操作接口你可以看看以前的帖子,ms的 office网站上也有,
    ----
    我的代理有问题,不能发长的帖子,见谅
      

  10.   

    为什么不用DTS呢?那是最简单的,根本不编程序,按向导一步步来
      

  11.   

    ok,问题终于解决了。发给大家共享一下!
    procedure Tfrm_LoadData.DataLoad;
    var
      XlsApp,XlsSheet: Variant;
      I,J,k,Row,Col,sRow,sCol: integer;
      ExcelFile: string;
      TmpString: String;
    begin
      ads_loaddata.Close;
      ads_loaddata.CommandText := 'Select * from '+trim(utable);
      ads_loaddata.Open;
      g_col:=ads_loaddata.FieldCount;
      ExcelFile := Trim(Edit1.Text);
      try
        if VarIsEmpty(XlsApp) then
          XlsApp := CreateOleObject('Excel.Application');
        XlsSheet := XlsApp.workbooks.open(ExcelFile);
        Row:=XlsApp.workbooks[1].worksheets[1].UsedRange.Rows.Count;
        progressbar1.Step := 1;
        progressbar1.Position := 0;
        progressbar1.Max := row;
        Col := g_col;
        sRow := 1;
        sCol := 1;
        for I := sRow to (sRow + Row) - 1 do
        begin
          k := 0;
          TmpString := '';
          ADS_LoadData.open;
          ADS_LoadData.Append;
          for J := sCol to (sCol + Col) - 1 do
                begin
            TmpString := XlsSheet.ActiveSheet.Cells[I,J].Text;
            ADS_LoadData.Fields[k].AsString := TmpString;
            k := k + 1;
          end;
          try
            ADS_LoadData.Post;
            progressbar1.StepIt;
          except
            showmessage('&frac14;&AElig;&frac34;&Uacute;&frac34;&Eacute;¤J¤¤&Acirc;_,&brvbar;&sup3;&yen;i&macr;à&cedil;ê&reg;&AElig;&shy;&laquo;&acute;_&copy;&Icirc;&ordf;í&micro;&sup2;&ordm;c&Eacute;OExcel&Agrave;&Eacute;&reg;×&micro;&sup2;&ordm;c¤&pound;&brvbar;P!');
            ads_loaddata.Cancel;
            abort;
          end;
        end;
      Application.MessageBox('&frac14;&AElig;&frac34;&Uacute;±qExcel&frac34;&Eacute;¤J&frac14;&AElig;&frac34;&Uacute;&ordf;í&brvbar;¨&yen;\!','&acute;&pound;&yen;&Uuml;',mb_OK + MB_DEFBUTTON1);
      except
        Application.MessageBox('&frac14;&AElig;&frac34;&Uacute;±qExcel&frac34;&Eacute;¤J&frac14;&AElig;&frac34;&Uacute;&ordf;í¤&pound;&brvbar;¨&yen;\!','&iquest;ù&raquo;~',mb_OK + MB_DEFBUTTON1);
      end;
        XlsSheet.close;
        XlsApp.Application.quit;
        XlsApp := Unassigned;
        XlsSheet := Unassigned;
    end;