我正在尝试通过OLEDB阅读器读取xls文件,并在xls的一列中使用混合数据类型. Oledb向我返回了这些列值的DBNULL.我在本专栏的第一个单元格中有05-06-12.当我去检查格式单元格时,它会向我显示dd-mm-yy的自定义类型,而在所有其他单元格中会显示常规格式.我正在使用以下连接字符串
mCon.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;data source=" + mstrFilePath + ";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\";");
我在xls中有以下数据
> 12年5月6日
>
‘abc’
>“ 56565”
OLEDB像这样阅读
> 2012年6月5日
> DBNULL
> DBNULL
可能是什么原因 ?甚至我把IMEX = 1放在连接字符串中!
解决方法:
读取xlsx文件时,我遇到了类似的问题.我将连接字符串更改为以下内容,并且有效:
const string con = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyExcel.xlsx;" +"Extended Properties=\"Excel 12.0;IMEX=1;HDR=YES;TypeGuessRows=0;ImportMixedTypes=Text\"";
您需要将xls转换为xlsx并使用
Microsoft.ACE.OLEDB.12.0
读取xlsx文件.