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);
文章標籤
全站熱搜
