繁体   English   中英

C#winform中的excel列选择查询

[英]excel columns selection query in C# winform

我正在尝试从excel表中其列类型为DateTime的列中匹配日期。 使用以下查询

DateTime dtNew = Convert.ToDateTime("7/16/2010");
OleDbDataAdapter da = new OleDbDataAdapter("Select * FROM [" + SheetName + "$] where [Hand off date] = '" + dtNew + "'", conn);

我正进入(状态

条件表达式中的数据类型不匹配”。

请对此提供帮助。

由于您使用的是JET db提供程序(我在这里假设),这意味着您的连接字符串如下所示:

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\SOTest3.xls;Extended Properties=""Excel 8.0;HDR=YES;""";

您的日期必须用'#'号括起来(单引号除外)。 那应该工作。

这是一个对我有用的例子:

static void Main(string[] args)
{
    string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\SOTest3.xls;Extended Properties=""Excel 8.0;HDR=YES;""";
    DbProviderFactory factory =
      DbProviderFactories.GetFactory("System.Data.OleDb");

    using (DbConnection connection = factory.CreateConnection())
    {
        connection.ConnectionString = connectionString;
        using (DbCommand command = connection.CreateCommand())
        {
            connection.Open();  //open the connection 
            DateTime dtNew = Convert.ToDateTime("7/21/2010");
            DbDataAdapter da = factory.CreateDataAdapter();
            da.SelectCommand = command;
            da.SelectCommand.Connection = connection;
            da.SelectCommand.CommandText = "SELECT * FROM [Sheet1$] WHERE [Hand Off Date] = #" + dtNew.ToString("yyyy-MM-dd") + "#";
            DataTable dtDate = new DataTable();
            da.Fill(dtDate);
            Console.WriteLine(dtDate.Rows.Count);
            Console.ReadLine();                    
        }
    }
}

希望这可以帮助!!

你有没有尝试过

OleDbDataAdapter da = new OleDbDataAdapter("Select * FROM [" + SheetName + "$] where [Hand off date] = '" + dtNew.ToString("yyyy-mm-dd") + "'", conn);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM