最近在研究如何操作Excel文件,目前主要研究oledb方法和利用Office 的Excel組件來操作Excel文件
今天發(fā)表利用oledb的方式,根據(jù)多個條件進行數(shù)據(jù)的查詢。
明天爭取做個例子,利用Office 的Excel組件來操作Excel文件
1.Excel文件第一行設置為列名:
/// <param name="excelPath">Excel文件的路徑</param> /// <returns>OLEDB連接對象</returns> public static OleDbConnection GetOledbConnection(string excelPath) // 這里的HDR我設置為了Yes,也就是說我Excel中的第一行會當做列名,而不是數(shù)據(jù) string conString=string.Format("Provider=Microsoft.Ace.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'",excelPath); return new OleDbConnection( conString=string.Format );
/// <param name="excelPath">Excel文件的路徑</param> /// <param name="sheetName">sheet名稱</param> /// <returns>DataTable</returns> public DataTable GetSheetInfoByCondition(string excelPath,string sheetName) OleDbConnection con=null; con = GetOledbConnection(excelPath); OleDbCommand cmd = con.CreateCommand(); // 這里查詢的條件我寫死了,當然你可以動態(tài)的傳值進來進行查詢 cmd.CommandText = string.Format("select * from [{0}$] where 姓名='張三' and 年齡='25'",sheetName); OleDbDataAdapter adapter = new OleDbDataAdapter ( cmd ); DataSet ds = new DataSet (); adapter.Fill(ds,sheetName);
2.Excel文件第一列不是列名:
/// <param name="excelPath">Excel文件的路徑</param> /// <returns>OLEDB連接對象</returns> public static OleDbConnection GetOledbConnection(string excelPath) // 這里的HDR我設置為了No,也就是說我Excel中沒有列名,每一列的輸入的值都是數(shù)據(jù) string conString=string.Format("Provider=Microsoft.Ace.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=No;IMEX=1;'",excelPath); return new OleDbConnection( conString=string.Format );
/// <param name="excelPath">Excel文件的路徑</param> /// <param name="sheetName">sheet名稱</param> /// <returns>DataTable</returns> public DataTable GetSheetInfoByCondition(string excelPath,string sheetName) OleDbConnection con=null; con = GetOledbConnection(excelPath); OleDbCommand cmd = con.CreateCommand(); // 這里查詢的條件我寫死了,當然你可以動態(tài)的傳值進來進行查詢 // 如果你在連接字符串里沒有設置列名,oledb會自動生成列名,列名分別為F1,F(xiàn)2,F(xiàn)3,F(xiàn)4......... cmd.CommandText = string.Format("select * from [{0}$] where F1='張三' and F2='25'",sheetName); OleDbDataAdapter adapter = new OleDbDataAdapter ( cmd ); DataSet ds = new DataSet (); adapter.Fill(ds,sheetName);
以上兩種oledb連接字符串,我使用的都是Excel2007版本,對于不同版本的連接字符串,請參照下面連接里的詳細說明:
http://blog.csdn.net/sdd379733766/article/details/9838453
|