close
1.前言
利用C#程式讀取Excel檔案,並且可用SQL Command來查詢檔案內容。
2.說明
加入命名空間
using System.Data.OleDb;
獲取Excel檔案Sheet的名稱
private DataTable GetExcelSheetNames(string filePath) { //Office 2003 OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'"); //Office 2007 //OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'"); DataSet ds = new DataSet(); conn.Open(); DataTable dt = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null); conn.Close(); return dt; }
透過下SQL語法讀取檔案內容
private DataTable GetExcelDataTable(string filePath, string sql) { //Office 2003 OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;Readonly=0'"); //Office 2007 //OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'"); OleDbDataAdapter da = new OleDbDataAdapter(sql, conn); DataTable dt = new DataTable(); da.Fill(dt); dt.TableName = "tmp"; conn.Close(); return dt; }
3.應用
例如Excel檔案中的頁簽名稱為Sheet1,Win8下組態管理員平台選x86。
string tableName == "[Sheet1$]";//在頁簽名稱後加$,再用中括號[]包起來 string sql = "select * from " + tableName;//SQL查詢 DataTable dt = GetExcelDataTable(filePath, sql);
文章標籤
全站熱搜