关于这个问题还有其他几个问题,但我看到的答案引用了文本文件驱动程序,而我使用的是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语句之前覆盖此字段的数据类型?谢谢!
答案 0 :(得分:0)
已经有一段时间了,但我相信我通过使用OLEDB连接代替ODBC来解决这个问题。