C# 使用 OleDb 讀取Excel表格數據

  1. 首先需要先從 NuGet 包管理器中安裝 System.Data.OleDb 
  2. 類中引入需要用到的命名空間
  3. 上代碼(連接字符串直接百度)
     string file_name = "test.xls";//文件路徑,此處爲了省事,直接把文件放到了bin->Debug->netcoreapp3.1文件夾下(demo是一個.Net Core的控制檯項目)
     string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + file_name + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";//連接數據源所用的字符串
     OleDbConnection con = new OleDbConnection(conString);//創建連接
     con.Open();//打開連接
     string sql = "select * from [Sheet1$]";//查詢語句
    
     OleDbDataAdapter adp = new OleDbDataAdapter(sql, con);//執行查詢語句
     DataSet ds = new DataSet();//可以理解未內存中的一個數據庫,裏邊會有多張表
     adp.Fill(ds);//將查詢結果填充到DataSet中
     con.Close();//關閉連接
     con.Dispose();//釋放資源
     DataTableCollection datatable_collection = ds.Tables;//得到一個數據表的集合
     DataTable dt = datatable_collection[0];//第一張表就是我們的數據
     foreach (DataRow dr in dt.Rows)
     {
        Console.WriteLine($"{dr[0]}  {dr[1]}   {dr[2]}");
     }
    
     Console.ReadKey();

     

  4. 執行結果

--------------------------------------------------------------------------------------------------------------------------------------------------------------

這裏分享兩個比較實用的東西

1.按照我上邊的步驟做了,但是報錯(The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine)

這是因爲你的電腦上缺少 office的數據連接組件(AccessDatabaseEngine) 

可以下載我給的這個,親測好用

 

2.對於連接數據源的連接字符串各個參數的說明

Provider:連接提供者

Data Source:數據源地址(對於本文對應的就是Excel文件的路徑)

 HDR :” YES 表示第一行包含列名,而不是數據。“ HDR =NO;” 表示相反。

IMEX:0 表示寫入權限  1 表示只讀    2擁有讀寫權限

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章