Здравствуйте, у меня есть таблица Excel. Я пытаюсь прочитать данные из этого файла. Datareader получает правильные значения для некоторых полей (столбцов). Но перейдите в столбец категории, я получаю «InvalidCastException».
Мой код, как показано ниже
public static List<Post> PostList(string path)
{
List<Post> post_list = new List<Post>();
try
{
OleDbConnection oledbConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';");
try
{
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = oledbConn;
cmd.CommandText = "SELECT * FROM [liste$] ";
Post postt = null;
oledbConn.Open();
OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
try
{
while (dr.Read())
{
postt = new Post();
postt.Post_Baslik = dr.GetString(dr.GetOrdinal("post_baslik"));
postt.Post_cat2 = Convert.ToInt32(dr.GetString(dr.GetOrdinal("Post_cat2")));
postt.Post_Cat = Convert.ToInt32(dr.GetInt32(dr.GetOrdinal("post_cat_id")));
postt.Post_Meta_Title = dr.GetString(dr.GetOrdinal("post_meta_title"));
postt.Post_Meta_Desc = dr.GetString(dr.GetOrdinal("post_meta_desc"));
post_listesi.Add(postt);
}
dr.Close();
}
finally
{
if (dr != null)
{
((IDisposable)dr).Dispose();
}
}
}
finally
{
if (oledbConn != null)
{
((IDisposable)oledbConn).Dispose();
}
}
}
catch (Exception exception)
{
throw exception;
}
List<Post> posts = post_list;
return posts;
}
Вы спросите меня, почему я Convert.toInt32 вместо GetInt32. Я старался. Почему у меня возникают проблемы. Я проверил свою таблицу Excel. Значения строго отформатированы.
какое самое большое значение столбца категории? самое высокое значение я имею в виду...
Все значения строк одинаковы: 98 @FrancescoB.
в этом столбце есть пустые ячейки?
Нет. Я проверил все столбцы
Можете ли вы опубликовать образец строки вашего Excel?