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