【发布时间】:2013-06-17 10:01:17
【问题描述】:
我正在尝试通过 OLEDB 阅读器读取 xls 文件,其中一列 xls 中具有混合数据类型。 Oledb 为这些列值返回 DBNULL。我在本专栏的第一个单元格中有05-06-12。当我去检查格式单元格时,它显示custom type with dd-mm-yy,在所有其他单元格中显示一般格式。我正在使用以下连接字符串
mCon.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;data source=" + mstrFilePath + ";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\";");
我在 xls 中有以下数据
- 05-06-12
- 'abc'
- '56565'
OLEDB 是这样读取的
- 2012 年 6 月 5 日
- DBNULL
- DBNULL
可能是什么原因?即使我把IMEX = 1 放在连接字符串中!!!
【问题讨论】:
-
单元格中的数据是字面意义上的
'abc',还是实际上只是abc(没有单引号)? -
另外,请贴出您用于读取数据的代码。
-
在我自己做了一些测试之后,我无法重现你的结果。我尝试了
'abc'、''abc'(实际查看'abc'显示在Excel 数据单元格中所需的内容)和abc。无论使用OleDbDataAdapter通过Fill方法选择DataSet,还是通过使用OleDbDataReader循环,我总是能读出正确的值。我怀疑导致此问题的 Excel 工作表中的格式存在某些特定问题。 -
此外,我怀疑如果相关列的第一个单元格包含日期 (
05-06-12),那么该列的DataType将由该单元格的格式定义,从而使数据随后对该类型无效。