excel - 在 SSIS 中从 Excel 读取数据时出现无效转换异常

标签 excel vb.net ssis excel-interop script-component

我正在尝试读取 Excel 的特定单元格值并将其存储在表格中。但收到 Invalid 强制转换异常。下面是我的 VB 脚本代码:

Dim oExcel As Object = CreateObject("Excel.Application")
Dim FileName As String
FileName = Variables.FileName
Dim oBook As Object = oExcel.Workbooks.Open(FileName)
Dim oSheet As Object = oBook.Worksheets(1)
Output0Buffer.AddRow()
Output0Buffer.OrgName = oSheet.Range("A4").Value
Output0Buffer.UnitName = oSheet.Range("B6").Value
Output0Buffer.MonthName = oSheet.Range("A8:A19").Value
Output0Buffer.Goals = oSheet.Range("B8:B19").Value
Output0Buffer.Actual = oSheet.Range("C8:C19").Value

错误消息是:

System.InvalidCastException: Conversion from type 'Object(,)' to type 'String' is not valid

有人可以帮我找出问题并提供解决方案吗?

最佳答案

主要问题是您尝试将 Excel 范围(多个单元格)分配到单个列中:

  • oSheet.Range("A4") 将返回 A4 整列
  • oSheet.Range("A8:A19") 将返回此范围内的所有单元格 A8:A19

而不是使用Range属性:

Output0Buffer.OrgName = oSheet.Range("A4").Value

您应该使用Cells属性来读取特定单元格:

Output0Buffer.OrgName = oSheet.Cells(4,1).Value

要了解有关 Cells 属性的更多信息,您可以引用以下文档:

关于excel - 在 SSIS 中从 Excel 读取数据时出现无效转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57343484/

相关文章:

excel - 上电查询Error.Record

excel - 循环遍历文件扩展名,excel vba

vb.net - .NET - 非常奇怪的 NullReferenceException?

sql-server - 数据流问题中的 OLE DB 源与变量

sql-server - 如何跳过ssis平面文件源中的坏行

excel - 宏导致 Excel 工作表显示隔离线?如何摆脱?

vba - Excel VBA - 删除*word*后的字符串内容

c# - 存储要在 Azure 角色之间共享的静态文件

c# - VB 中的重写事件

c# - ssis 脚本将 System.DateTime 转换为 DT_DBTIMESTAMP 但不转换为 DT_DBTIMESTAMP2