C# 如何在C.NET中的datagridview中显示/获取Excel数据

C# 如何在C.NET中的datagridview中显示/获取Excel数据,c#,.net,filter,C#,.net,Filter,我必须在C.NET中编写一个程序,在datagridview中加载并显示Excel文件中的数据,然后我想使用date to datefilter根据选择的日期显示Excel文件数据。 我的Excel中有7列1800行,我有DateTimePicker1和DateTimePicker2可从_todate中选择,并有按钮显示filterdate to date。 我编写了一个程序,可以在datagridview中下载并显示excel文件,但我无法显示筛选日期。 你能帮我吗,我如何用C语言过滤我的ex

我必须在C.NET中编写一个程序,在datagridview中加载并显示Excel文件中的数据,然后我想使用date to datefilter根据选择的日期显示Excel文件数据。 我的Excel中有7列1800行,我有DateTimePicker1和DateTimePicker2可从_todate中选择,并有按钮显示filterdate to date。 我编写了一个程序,可以在datagridview中下载并显示excel文件,但我无法显示筛选日期。 你能帮我吗,我如何用C语言过滤我的excel文件数据

这里我需要帮助,请告诉我如何显示最新的excel数据,我尝试使用此代码,但它不起作用


你错得不远!筛选DataTable中结果的最简单方法是使用返回DataRow[]的Select方法。这需要转换回DataTable以用作数据源

填充后的类似内容:


显然,您需要将DateColumn更改为电子表格中列的任何名称。

谢谢您的回答,但我必须将此代码放在for循环之前或之后的位置,我是否应该更改代码中的某些内容。不,它将替换整个foreach循环。数据源只设置一次!我是否应该更改此行中的内容,OleDbCommand command=new-OleDbCommandSelect*,con;/?。。。。。。如果不知道您的电子表格,很难说,但通常它应该在[Sheet1$]的Select*行上,假设工作表名为Sheet1-英语Excel的默认值现在查看我的代码编辑后,我将替换您的代码,对吗?
    //======================Filter button ========================
    private void Button3_Click(object sender, EventArgs e)
    {

        try
        {

            DateTime startSchedule = startDate.Value.Date;
            DateTime endSchedule = endDate.Value.Date;


            string constr = string.Format("Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" + tb_path.Text + ";Extended Properties = \"Excel 12.0; HDR=Yes;\"; ");
            OleDbConnection con = new OleDbConnection(constr);
            OleDbCommand command = new OleDbCommand("Select * From[" + drop_down_sheet.SelectedValue + "]", con);
            OleDbDataAdapter sda = new OleDbDataAdapter(command);
            DataTable dt = new DataTable();
            sda.Fill(dt);
           /* foreach (DataRow row in dt.Rows)
            {
                dataGridView1.DataSource = dt;
                dt.DefaultView.RowFilter = string.Format(tb_path.Text); //?.....

            }*/
string filter = "Date > '" + startDate.Value.ToString("yyyy-MM-dd") + "' AND  Date < '" + endDate.Value.ToString("yyyy-MM-dd") + "'";
          DataRow[] filteredRows = dt.Select(filter);
          dataGridView1.DataSource = filteredRows.CopyToDataTable();


        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message,
         "Important Note",
         MessageBoxButtons.OK,
         MessageBoxIcon.Error,
         MessageBoxDefaultButton.Button1);

        }
    }
string filter = "YourDateColumn > '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "' AND YourDateColumn < '" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "'";
DataRow[] filteredRows = dt.Select(filter);
dataGridView1.DataSource = filteredRows.CopyToDataTable();