将具有特定条件的excel中的数据导入DataGridview

时间:2014-03-01 14:45:08

标签: c# excel datagridview

这是我导入Excel文件的方式:

stirng file = "c:\myFile.xlsx";
DataGridView dgvIM;

private void Import()
        {
            String name = "Items";
            String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
                            file +
                            ";Extended Properties='Excel 8.0;HDR=YES;';";

            OleDbConnection con = new OleDbConnection(constr);
            OleDbCommand oconn = new OleDbCommand("Select * From [" + name + "$]", con);
            con.Open();

            OleDbDataAdapter sda = new OleDbDataAdapter(oconn);
            System.Data.DataTable data = new System.Data.DataTable();
            sda.Fill(data);
            dgvIM.DataSource = data;
        }

我想要做的是导入我的Excel文件但是具有特定条件,我的第二列包含几组字符串(“First”,“Second”等...)我想只添加名为“First”的列“而不是整个清单。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

只需在sql命令中使用where条件,就像这样

string cmdText = "Select * From [" + name + "$] WHERE secondColumnName = 'First'";
using(OleDbConnection con = new OleDbConnection(constr))
using(OleDbCommand oconn = new OleDbCommand(cmdText con))
{
     con.Open();
     OleDbDataAdapter sda = new OleDbDataAdapter(oconn);
     System.Data.DataTable data = new System.Data.DataTable();
     sda.Fill(data);
     dgvIM.DataSource = data;
}

请注意,在您的connectionstring中指定HDR = YES,这意味着Excel工作表的第一个非空行包含被解释为列名的标题。您应该在WHERE条件

中更新查询设置正确的列名

编辑在回复下面的评论时,如果您要检索AGE为12的每一行,查询将变为

string cmdText = "Select * From [" + name + "$] WHERE Age = 12";