从Excel文件到OLEDB的条件表达式中的数据类型不匹配

从Excel文件到OLEDB的条件表达式中的数据类型不匹配,excel,oledb,Excel,Oledb,我正在通过ASP.NET页面处理上载的文件。我正在使用以下连接字符串: string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + @";Extended Properties=""Excel 8.0;HDR=YES;"""; 下面是SQL语句: string sql = "SELECT * FROM [Sheet1$] WHERE [req_tf_order_no]

我正在通过ASP.NET页面处理上载的文件。我正在使用以下连接字符串:

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
     excelFile + @";Extended Properties=""Excel 8.0;HDR=YES;""";
下面是SQL语句:

string sql = "SELECT * FROM [Sheet1$] WHERE [req_tf_order_no] <> ''";
以下是大部分堆栈跟踪:

(Error Description: Data type mismatch in criteria expression.)
(Stack Trace: at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.OleDb.OleDbCommand.ExecuteReader() at ...
如果我没有包含WHERE子句(
WHERE[req\u tf\u order\u no]”
),我不会得到任何错误。WHERE子句的唯一原因是过滤掉输入文件中已清除但未删除的行

我怀疑输入Excel文件的格式或数据中有某种原因导致了这种情况。我有一些输入文件没有抛出异常,但大多数都抛出异常。导致此错误的原因是什么?如何修复?有没有更好的方法来完成我想做的事情?我可以让用户上传不同的文件格式吗

编辑 发现在SQL语句中检查null而不是空字符串时不会引发异常


string sql=“从[Sheet1$]中选择*,其中[req\u tf\u order\u no]不为空”

发现在SQL语句中检查null而不是空字符串时不会引发异常


string sql=“从[Sheet1$]中选择*,其中[req\u tf\u order\u no]不为空”

如果你把编辑贴出来作为一个答案并做标记可能会更好,因为目前很难发现,而且你应该得到一些分数,因为回答你自己的问题是完全合法的。
(Error Description: Data type mismatch in criteria expression.)
(Stack Trace: at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.OleDb.OleDbCommand.ExecuteReader() at ...