我正在尝试通过 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 中有以下数据
- 05-06-12
- > '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 文件。
关于c# - Oledb 阅读器无法正确读取 excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17144866/