ODBC连接到Excel文件 - 覆盖确定的数据类型

时间:2014-08-26 18:34:02

标签: c# excel odbc

关于这个问题还有其他几个问题,但我看到的答案引用了文本文件驱动程序,而我使用的是xlsx文件。无论如何,这是问题所在:

有没有办法在从Excel中提取数据的C#程序中覆盖ODBC确定的数据类型?数据类型似乎是一个数字,因为行扫描显示大部分数据为数字,而它意味着要作为字母数字处理。使用ODBCDataReader.GetValue(int)方法将所有文本数据作为NULL传递。

以下是代码的基本结构:

public static void test()
{
    OdbcDataReader DataReader;
    try
    {
        using (OdbcConnection ODBC_Connection = new OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + filename))
        {

            ODBC_Connection.Open();
            OdbcCommand Command = new OdbcCommand("SELECT * FROM [" + sheetName + "]", ODBC_Connection);

            Command.CommandType = System.Data.CommandType.Text;
            DataReader = Command.ExecuteReader();

            while (DataReader.Read())
            {
                field0 = DataReader.GetValue(0).ToString();
                field1 = DataReader.GetValue(1).ToString();
                field2 = DataReader.GetValue(2).ToString();
                field3 = DataReader.GetValue(3).ToString();
                field4 = DataReader.GetValue(4).ToString();
            }
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

field4是相关字段,其他字段的所有数据都通过.GetValue(int)方法正确传递。

如何在SELECT语句之前覆盖此字段的数据类型?谢谢!

1 个答案:

答案 0 :(得分:0)

已经有一段时间了,但我相信我通过使用OLEDB连接代替ODBC来解决这个问题。