excel列select查询在C#winform中

我试图匹配Excel列表types为DateTime的列中的date。 使用以下查询

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

我正进入(状态

标准expression式中的数据types不匹配“。

请帮忙。

既然你使用JET数据库提供程序(我在这里假设),这意味着你的连接string看起来像这样:

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

您的date需要用'#'符号(不包括单引号)包围。 这应该工作。

这是一个适合我的例子:

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