我現在的情況是這樣的﹕
我要從客戶給的Excel文檔中取有用的數據導入數據庫中﹐如下面是一個Execl文檔的格式
                           AccountTao(表名)
YearMonth          Year    Month   MaxDay(各個欄位名)
2002年07月 2002 07 31
2002年08月 2002 08 31
2001年01月 2001 01 31
2002年09月 2002 09 30
2002年10月 2002 10 31
2002年11月 2002 11 30
2002年12月 2002 12 31
2003年01月 2003 01 31
2003年02月 2003 02 28
2003年03月 2003 03 31
2002年03月 2002 03 31
2003年04月 2003 04 30
我可能只要取Execl文檔中取某一字段或某几個字段
比如﹕我要取上面Execl中的YearMonth﹑MaxDay兩個字段﹐要怎樣來寫程序呢﹖
各位能否給我寫個函數出來﹐謝謝﹗

解决方案 »

  1.   

    报Excel当作数据库一样处理就可实现你的功能
      

  2.   

    To   wyj1974(迷茫的帅哥)
    你的意思是把Excel當一個Table來處理嗎﹖但是在Excel中我有和字段是不需要的﹐那要怎樣來處理呢﹖
      

  3.   

    如果是SQL Server, 可以使用TDS工具,也就是Import and Export Data
      

  4.   

    To  Wally_wu(韦利)
    不是你想象的那樣的﹐如果能用SQl Server來Import我為什么還要寫程序呢﹖
    我現在自已解決了這個問題﹐我要結貼了。
      

  5.   

    不好意思﹐還是有點問題﹐下面是我的程序
    Procedure TForm1.ExcelToDatabase(Qy:Tdataset);
      var
       ExcelApp,MyWorkBook :OLEVariant;
       Open :TOpenDialog;
       i,row : integer;
    begin
      Open:= TOpenDialog.Create(application);
      if Open.Execute then
      begin
        Try
          ExcelApp:=CreateOleObject('Excel.Application');
          MyWorkBook:=CreateOleObject('Excel.Sheet');
        Except
          application.Messagebox('無法打開Xls文件﹐請確定已經安裝了EXCEL.','',mb_OK+mb_IconStop);
          Exit;
        end;
        Try
          MyworkBook:= ExcelApp.workBooks.Open(Open.FileName);
          //打開文件后﹐對文件進行操作
          Row := 1;
          if ExcelApp.Range['a'+inttostr(row),'a'+inttostr(row)].Value='' then
          begin
            application.Messagebox('Excel文件中沒有數據或格式和樣版不一樣!.','',mb_OK+mb_IconStop);
            Exit;
          end;
          Row :=2;
          if qy.active = False then  Qy.open;
    //*************************************************************
      在下面這句﹐當Excel文檔到結尾時﹐既當MyWorkBook.WorkSheets[1].Cells[Row,Row].Value為空時會出現一個錯誤。
    錯誤信息是﹕
    Project project1.exe raised exception class.EvariantError with message'Invalid Variant type conversion'process stopped,Use step or Run to continue.
    //*********************************************************************
          while MyWorkBook.WorkSheets[1].Cells[Row,Row].Value<>'' do
          begin
            for i:=0 to  Qy.Fields.Count-1 do
            begin
             qy.Fields[i].Value:=MyWorkBook.WorkSheets[1].Cells[Row,i].Value;
            end;
            Inc(Row);
          end;    finally
            ExcelApp.WorkBooks.close;
            ExcelApp.Quit;
            ExcelApp:=Unassigned;
         end; //try..finally
      end;
    end;請各位大俠幫幫忙﹐看能不能幫我解決﹐好急的。先謝了﹗
      

  6.   

    用ADOCONNECTION连接EXCEL文件,可以跟操作数据库一样操作
      

  7.   

    To qiujsh(qiujsh)
    能否說清楚點呢﹖或者給一個例子﹐謝謝﹗