Ошибка InvalidCast .Net OleDbDataReader

avatar
serdar
7 апреля 2018 в 22:51
29
0
0

Здравствуйте, у меня есть таблица 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. Значения строго отформатированы.

Источник
Francesco B.
8 апреля 2018 в 10:18
0

какое самое большое значение столбца категории? самое высокое значение я имею в виду...

serdar
8 апреля 2018 в 11:39
0

Все значения строк одинаковы: 98 @FrancescoB.

Francesco B.
8 апреля 2018 в 11:54
0

в этом столбце есть пустые ячейки?

serdar
8 апреля 2018 в 12:11
0

Нет. Я проверил все столбцы

Francesco B.
8 апреля 2018 в 12:34
0

Можете ли вы опубликовать образец строки вашего Excel?

Ответы (0)