C#用Oledb查询Excel某个sheet中的数据——按多个条件查询

最近在研究如何操作Excel文件,目前主要研究oledb方法和利用Office 的Excel组件来操作Excel文件

今天发表利用oledb的方式,根据多个条件进行数据的查询。

明天争取做个例子,利用Office 的Excel组件来操作Excel文件

1.Excel文件第一行设置为列名:

///   
/// 获取OLEDB连接对象。  
///   
/// Excel文件的路径
/// OLEDB连接对象 
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 );
}

///   
/// 按条件查询sheet中的信息  
///   
/// Excel文件的路径
/// sheet名称
/// DataTable 
public DataTable GetSheetInfoByCondition(string excelPath,string sheetName)
{
    OleDbConnection con=null; 
    try
    {
        con = GetOledbConnection(excelPath);
        con.Open();
        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);

        return ds.Tables[0];
    }
    catch(Exception ex)
    {
        throw ex;
    }
    finally
    {
        if(con!=null)
        {
            con.Close();
        }
    }

    return null;
}

2.Excel文件第一列不是列名:

///   
/// 获取OLEDB连接对象。  
///   
/// Excel文件的路径
/// OLEDB连接对象 
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 );
}

///   
/// 按条件查询sheet中的信息  
///   
/// Excel文件的路径
/// sheet名称
/// DataTable 
public DataTable GetSheetInfoByCondition(string excelPath,string sheetName)
{
    OleDbConnection con=null;
    try
    {
        con = GetOledbConnection(excelPath);
        con.Open();
        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);

        return ds.Tables[0];
    }
    catch(Exception ex)
    {
        throw ex;
    }
    finally
    {
        if(con!=null)
        {
            con.Close();
        }
    }

    return null;
}

 
  

以上两种oledb连接字符串,我使用的都是Excel2007版本,对于不同版本的连接字符串,请参照下面连接里的详细说明:

http://blog.csdn.net/sdd379733766/article/details/9838453

 
 

你可能感兴趣的:(c#,OLEDB,Excel)