OLEDB连接不会从Excel工作表中读取数据

时间:2010-03-15 06:14:49

标签: c#

我遇到了一个奇怪的问题。我正在使用OLEDB进行excel连接 connection string = Provider = Microsoft.Jet.OLEDB.4.0; Data Source = c:\ Execute.xls; Extended Properties = Excel 8.0;“);

excel文件包含具有字符串/整数值的列。 问题是,有时连接从表中读取值绝对精细但有时它错过了一些数据值并将它们显示为System.DBNull。 行为非常不一致。 请帮忙。

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我的第一个猜测是检查您的区域参数。数字格式从一个区域设置到另一个区域设置会有所不同,这可能会导致问题。虽然Excel应该自动为你管理它,但有时它不会因为它被混淆或者其他东西,然后渲染一些奇怪的数据,比如那些DBNull值。

答案 2 :(得分:0)

这是你的问题。 IIRC,驱动程序只读取前8行数据,并根据该行确定列的数据类型。

所以,让我们说,在第1列的前8行中,您只有数字。驱动程序将确定该列是整数。然后,如果遇到第9行中的字符串,它将无法将其转换为整数,从而将DBNull返回给您。

你可以做几件事。

  • 预处理电子表格并将所有内容转换为字符串
  • 有一个注册表项(此位置让我逃脱),它允许您增加驱动程序用来确定数据类型的行数。
  • 使用商业Excel阅读器控件
  • 通过Excel Interop库打开工作表并自行阅读单元格

答案 3 :(得分:0)

使用此代码

AutoScroll