Oledb阅读器无法正确读取excel文件

时间:2013-06-17 10:01:17

标签: c# winforms excel oledb

我正在尝试通过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像这样读取它

  • 05君12
  • 的DBNull
  • 的DBNull

可能是什么原因?甚至我把IMEX = 1放在连接字符串!!!

4 个答案:

答案 0 :(得分:3)

我在阅读xlsx文件时遇到了类似的问题。我将连接字符串更改为以下内容并且有效:

80

您需要将xls转换为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\"";

阅读xlsx文件。

答案 1 :(得分:1)

Importmixedtypes=text添加到您的连接字符串中,如下所示

mCon.ConnectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;Importmixedtypes=text;typeguessrows=0;\"",mstrFilePath);

答案 2 :(得分:1)

经过几个小时的反复试验并寻找解决方案后,我开始研究:

"Provider=Microsoft.ACE.OLEDB.12.0; Data Source= {0}; Extended Properties=\"Excel 12.0;IMEX=2;HDR=YES;TypeGuessRows=0;ImportMixedTypes=Text\""

注意:

  1. IMEX = 2
  2. HDR = YES,最重要的是
  3. 扩展属性应附有双引号
  4. 抱歉这也不行......用错了文件: - (

答案 3 :(得分:-1)

我猜你的连接字符串是错误的。如果Excel版本是2007或更高版本(即.xlsx扩展名),那么我们需要在xls文件的情况下使用ACE引擎(在您的情况下),我们应该使用Jet引擎连接字符串。请用您现有的字符串替换下面提到的字符串。我想问题应该得到解决。

mCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                  "Data Source=" + FilePath + ";" +
                  "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1' ";