错误“指定的转换无效”从C#

我有一个C#程序,应该从一个小的四列电子表格(.xlsx)中提取数据。 它读取第一列罚款,但是当它到达第二我得到以下错误:

“指定的演员无效”

我已经检查并重新检查了单元格的格式,第一列和第二列之间没有区别。 以下是电子表格中第一行的值。 每个值代表一个单独的列。

121220 330004双02/22/2012

这里是我正在使用的代码。 Idvariables加载得很好,这是导致问题的courseCode。

string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=C:\Projects\sym_AgentServices_INT\Book1.xlsx;" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"; string queryString = "SELECT * FROM [CE$]"; try { OleDbDataReader reader; using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand command = new OleDbCommand(queryString, connection); connection.Open(); reader = command.ExecuteReader(); while (reader.Read()) { string Id = ""; string courseCode = ""; string partner = ""; string effectiveDate = ""; string expirationDate = ""; Id = reader.GetString(0); courseCode = reader.GetString(1); partner = reader.GetString(2); effectiveDate = reader.GetString(3); expirationDate = reader.GetString(4); } } } 

编辑

我已经在运行时分析了读者对象,发现了以下几点:扩展基地多次,打开System.Data.OleDb.OleDbDataReader的_bindings属性,我发现那里只有一个条目(“0”) 。 但是,如果我打开0,然后展开_columnBindings属性我find值0 – 4。

从阅读器提取数据(“reader.GetString(x)”)时,我的语法可能不正确?

最终编辑

而不是使用.GetString(x)我强烈推荐使用reader [x] .ToString()。 这解决了这个问题。

当我使用reader [n] .ToString()时,错误消失了:

  string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=d:\temp\Book1.xlsx; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"; string queryString = "SELECT * FROM [CE$]"; OleDbDataReader reader; using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand command = new OleDbCommand(queryString, connection); connection.Open(); DataSet ds = new DataSet("Book1"); IDataAdapter adapter = new OleDbDataAdapter(queryString, connection); adapter.Fill(ds); reader = command.ExecuteReader(); while (reader.Read()) { string Id = ""; string courseCode = ""; string partner = ""; string effectiveDate = ""; string expirationDate = ""; Id = reader[0].ToString(); courseCode = reader[1].ToString(); partner = reader[2].ToString(); effectiveDate = reader[3].ToString(); expirationDate = reader[4].ToString(); //Id = reader.GetString(0); //courseCode = reader.GetString(1); //partner = reader.GetString(2); //effectiveDate = reader.GetString(3); //expirationDate = reader.GetString(4); } } 

这是我的testing数据集…

 ID Course Code Partner Effective Date Expiration Date 100 5 MS 10/3/2012 10/3/2013 200 21-400 Oracle 10/3/2012 10/3/2013 300 Goog 10/3/2012 10/3/2013