最近在研究如何操作Excel文件,目前主要研究oledb方法和利用Office 的Excel组件来操作Excel文件
今天发表利用oledb的方式,根据多个条件进行数据的查询。
明天争取做个例子,利用Office 的Excel组件来操作Excel文件
1.Excel文件第一行设置为列名:
/// <param name="excelPath">Excel文件的路径</param> /// <returns>OLEDB连接对象</returns> public static OleDbConnection GetOledbConnection(string excelPath) // 这里的HDR我设置为了Yes,也就是说我Excel中的第一行会当做列名,而不是数据 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(); // 这里查询的条件我写死了,当然你可以动态的传值进来进行查询 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中没有列名,每一列的输入的值都是数据 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(); // 这里查询的条件我写死了,当然你可以动态的传值进来进行查询 // 如果你在连接字符串里没有设置列名,oledb会自动生成列名,列名分别为F1,F2,F3,F4......... 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
|