C#Excel查询问题

此代码正常工作。 但是当我想改变范围,给OleDBException。

OleDbCommand dates = new OleDbCommand("SELECT date FROM ["Sheet1$A1:B150"] ", baglanti); OleDbDataReader reader= dates.ExecuteReader(); while (reader.Read()) { list.Add(reader["date"]); } 

范围更改版本:

 OleDbCommand dates = new OleDbCommand("SELECT date FROM ["Sheet1$A250:B350"] ", baglanti); OleDbDataReader reader= dates.ExecuteReader(); while (reader.Read()) { list.Add(reader["date"]); } 

例外是:

 System.Data.OleDb.OleDbException was unhandled by user code ErrorCode=-2147217904 HResult=-2147217904 Message=No value is entered for one or more required parameters. Source=Microsoft Access Database Engine StackTrace: konum: System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) konum: System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) konum: System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) konum: System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) konum: System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) konum: Hasta_Bulucu.Form1.bul_DoWork(Object sender, DoWorkEventArgs e) C:\Users\Furka\documents\visual studio 2015\Projects\Hasta Bulucu\Hasta Bulucu\Form1.cs içinde: satır 269 konum: System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) konum: System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument) InnerException: 

尝试以下操作:

在连接string中设置HDR=NO ,如:

 OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePick.FileName.ToString() + ";Mode=Read;Extended Properties='Excel 12.0 xml;HDR=NO;IMEX=1;'"); 

也尝试将IMEX设置为0和2,然后尝试使用HDR = NO的不同组合。

你是对的,当范围不包括列名称,你可能会得到错误。 因此,您需要尝试按列索引读取文件,而不是名称。