OLEDB 讀 EXCEL

摘要:OLEDB 讀寫 EXCEL

  

        //Excel 8.0 為EXCEL 的版本 可上網查詢

    //Microsoft Excel 8.0 (97)、9.0 (2000) 和 10.0 (2002) 工作簿,请使用 Excel 8.0        
    public static System.Data.DataTable getDataTable(string xlsPath, string sheetName)
    {
        //OleDB連線,4.0版本
        //IMEX  = 1 import mode
        //IMEX  = 0 Export mode
        //IMEX  = 2 連結
        //HDR   =  NO show head YES not show head  
        string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsPath
          + ";Extended Properties='Excel 8.0;IMEX=1;HDR=YES; '";
     

        string strComm = "SELECT * FROM [" + sheetName + "$]";
        OleDbConnection dataConn = new OleDbConnection(strConn);
        DataSet ds = new DataSet();

        try
        {
            dataConn.Open();
          
           

            //建立Adpater來承接select出來的DataSet
            OleDbDataAdapter ta = new OleDbDataAdapter(strComm, dataConn);
            ta.Fill(ds);
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            //關閉連線
            if (dataConn.State == ConnectionState.Open)
            { dataConn.Close(); }
        }

        System.Data.DataTable dt = null;
        dt = ds.Tables[0];
        
        return dt;
    }




 //如何讀取  在未知的工作表下狀態進行讀取

//連結打開時這樣就可以取得

//再將取得字串送到查詢字串裡面 即可進行 資料查詢

 

  System.Data.DataTable dt1 = dataConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            
            for (int i = 0; i < dt1.Rows.Count; i++)
            {
                dt1.Rows[i]["TABLE_NAME"].ToString();  //取第一個EXCEL 工作表
            }
// 未來想跑整張 可用迴圈跑每一個 若真的只要抓第一個 就不用迴圈了
select * from [Sheet1$A1:B10]   <== 這邊為EXECL 儲存格格式

新手撰寫...若有錯誤的地方 
再請各位指正謝謝!!



//參考網址

http://www.cnblogs.com/ike_li/archive/2008/09/28/1301154.html

 

※2012-11-01 補充

在現在64 位元的電腦下

有可能出現

jet4.0 的問題 導致沒辦法讀取到EXCEL

這個狀況只要 修改 IIS 管理者網站 的應用程式集區>進階設定 >


啟用32 位元設定成 true 即可