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);
arrow
arrow
    文章標籤
    C# Excel SQL OLEDB
    全站熱搜

    西夏普 發表在 痞客邦 留言(0) 人氣()