Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 到Excel文件的ODBC连接-覆盖确定的数据类型_C#_Excel_Odbc - Fatal编程技术网

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

C# 到Excel文件的ODBC连接-覆盖确定的数据类型,c#,excel,odbc,C#,Excel,Odbc,关于这个问题还有几个其他的问题,但是我看到的答案引用了文本文件驱动程序,而我使用的是xlsx文件。无论如何,问题是: 在从Excel中提取数据的C程序中,是否有方法覆盖ODBC确定的数据类型?数据类型似乎是以数字的形式出现的,因为行扫描将大部分数据显示为数字,而它是以字母数字的形式处理的。使用ODBCDataReader.GetValueint方法,所有文本数据都以NULL形式传递 以下是代码的基本结构: public static void test() { OdbcDataReade

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

在从Excel中提取数据的C程序中,是否有方法覆盖ODBC确定的数据类型?数据类型似乎是以数字的形式出现的,因为行扫描将大部分数据显示为数字,而它是以字母数字的形式处理的。使用ODBCDataReader.GetValueint方法,所有文本数据都以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是有问题的字段,其他字段的所有数据都正确地通过.GetValueint方法传递


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

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

难道没有DataReader.GetString方法吗?如果这不起作用,您可以在第4列前面加上一个单引号,它应该被视为@mehow的textReference:因为SELECT查询没有为该字段提取任何数据,所以它是NULL,.GetString调用会抛出一个异常。我明白了,这很奇怪。您是否尝试过使用ADO而不是ODBcDataReader?我希望对现有的ODBC连接进行一些小的更改,而不是实现一些新的功能,但最终可能会变成这样。