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

本文关键字:数据类型 覆盖 连接 Excel 文件 ODBC | 更新日期: 2023-09-27 18:19:26

关于这个主题还有其他几个问题,但我看到的答案引用了Text文件驱动程序,而我使用的是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语句之前覆盖此字段的数据类型?谢谢

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

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