gpt4 book ai didi

c# - C# winform中的excel列选择查询

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:21 32 4
gpt4 key购买 nike

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

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

我得到了

Datatype mismatch in criterion expression'.

请帮忙解决这个问题。

最佳答案

由于您使用的是 JET 数据库提供程序(我在这里假设),这意味着您的连接字符串类似于:

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();
}
}
}

希望这对您有所帮助!

关于c# - C# winform中的excel列选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289849/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com