【问题标题】:How to read only few columns from excel using oledbdatareader in any order in C#.net?如何在 C#.net 中以任何顺序使用 oledbdatareader 从 excel 中读取几列?
【发布时间】:2012-08-18 14:12:06
【问题描述】:

当我尝试使用 OLEDbDataReader 类从 excel 中读取记录时,我无法以我想要的任何顺序读取每一行的列数据。它抛出索引超出范围异常

我的列是 FirstName、LastName、Salary。

OleDbDataReader oledbReader = oledbCmd.ExecuteReader();

// Doesn't display anything and throws "Index out of range exception".
MessageBox.Show(oledbReader["LastName"]);

如果我尝试按 FirstName、LastName 和 Salary 的顺序阅读,它可以工作,但我想按我想要的任何顺序阅读。这可能吗?

【问题讨论】:

    标签: c# excel oledb


    【解决方案1】:

    您必须以这种方式编写选择查询:select col1,col2,col3 from table

    在特定条件下不使用 select * from table this。

    【讨论】:

      【解决方案2】:

      我总是使用整数列索引从 Excel 中读取数据,并使用枚举来定义每列的索引。比如……

      MessageBox.Show(oleDbReader.GetValue(theColumnEnum.LastName))

      【讨论】:

        【解决方案3】:

        你可以按任何顺序阅读,试试这个:

        using (OleDbDataReader reader = oledbCmd.ExecuteReader())
        {
        
            while (reader.Read())
            {
                a = reader.GetValue(0).ToString();
                b = reader.GetValue(3).ToString();
                c = reader.GetValue(4).ToString();
        
            }
        
        }
        

        在这个例子中我使用reader.GetValue(0).ToString();因为我不知道值的类型,但是如果你知道类型你可以使用 reader.GetInt32(0) 和其他。

        【讨论】:

          猜你喜欢
          • 2013-03-26
          • 1970-01-01
          • 1970-01-01
          • 2015-08-20
          • 2013-06-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多