摘要: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 即可