【问题标题】:VB.net Visual Studio 2003 Reading Data from Excel TableVB.net Visual Studio 2003 从 Excel 表中读取数据
【发布时间】:2013-08-15 00:16:01
【问题描述】:

我正在尝试将 Excel 表中的数据读取到数据集中,但是我收到错误消息:“没有为一个或多个必需参数提供值。”我做了一些研究并了解到,当所需的值为空(在字符串的情况下为“”)或 null 时,通常会发生此错误。下面是我的代码。

cnExcel = New System.Data.OleDb.OleDbConnection( _
              "provider=Microsoft.Jet.OLEDB.4.0; " & _
              "data source=" & FileName & "; " & _
              "Extended Properties=Excel 5.0;")
cdImport = New System.Data.OleDb.OleDbDataAdapter( _
              "select * from [" & cSheetName & "$] order by StoreID, ItemID", cnExcel)
dsImport = New System.Data.DataSet
cdImport.Fill(dsImport)
cnExcel.Close()

错误发生在 cdImport.Fill(dsImport) 上大概是因为没有任何东西可以填充 dsImport。

经过调试发现cnExcel的Server Version字段为:error: an excpetion of type: {System.InvalidOperationException}发生

我做错了什么?

【问题讨论】:

    标签: database vb.net excel


    【解决方案1】:

    以防万一有人想知道这是如何解决的: 我最后只是将 excel 文件作为 csv 发送到我的服务器。然后服务器在文件上运行一个存储过程,该过程将一个表返回给我的应用程序。然后从这个表中填充一个数据集。

    【讨论】:

      【解决方案2】:

      您可能需要在连接字符串的Extended Properties=Excel 5.0; 部分加上额外的引号(有关更多信息,请参阅connectionstrings.com

      【讨论】:

      • 另外,我注意到在你的代码中你没有明确地做一个cnExcel.Open(),但你确实有一个cnExcel.Close()。也许在填充数据集之前尝试这样做(打开连接)
      • &何时使用它们
      • 再次感谢您的回复,但我尝试了您的两个建议,但都没有奏效。导致同样的错误。
      • 我能想到的唯一其他事情是将您的 ORDER BY 子句中的列名放在方括号中,例如[StoreID]。此外,我见过的其他连接字符串将 HDR=Yes 作为其扩展属性的一部分(例如在connectionstrings.com 上)。如果您想使用工作表的标题行作为列名,而不是仅使用自动生成的 Excel 列名,我认为您需要这个。抱歉,我无法提供更多帮助
      • HDR=Yes 是默认行为,但我已尝试添加它,以防万一,但没有运气。我知道这不是我的 ORDER BY 子句,因为我没有运气就删除了整个东西。不过,我确实尝试添加括号,但这也不起作用。再次感谢您的贡献。在旁注中,我注意到添加 cnExcel.Open() 可以消除服务器版本错误。现在它变成了 04.00.0000。不确定这是否正确。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多