C# Excel 查询问题
C# Excel Query Issue
这段代码工作正常。但是当我想更改范围时,会出现 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:
尝试以下操作:
在连接字符串中设置 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 的不同组合。
你是对的,当范围不包括列名时你可能会得到错误。因此,您需要尝试按列索引而不是名称来读取文件。
这段代码工作正常。但是当我想更改范围时,会出现 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:
尝试以下操作:
在连接字符串中设置 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 的不同组合。
你是对的,当范围不包括列名时你可能会得到错误。因此,您需要尝试按列索引而不是名称来读取文件。