我创建了一个SSIS包我采用'excel source'采取excel文件,但我的问题是我需要从excel文件中获取B7值并将其插入数据库表请帮忙,因为
B7值由表达式生成:= MAX($ B $ 32:C284)
嗨我想取date
的价值,即'8/26/2011'
和NAV
的价值,即'93737452.52'
并希望插入表格我正在使用'excel source '
立即获取excel文件连接选择'Data access mode'
中的'Excel source editor'
作为'SQL command'
现在我需要编写什么命令来获取'date'
和'NAV'
值,因为我已经粘贴了excel文件的图片,请让我知道进一步的步骤。
答案 0 :(得分:5)
由于您只需要电子表格中的两个非常具体的单元格值,我建议使用脚本组件从这些单元格中获取值,而不是使用Excel源代码。 Excel Source实际上是为了获得一堆行和&一致排列的列,而不是用于挑选单个细胞。
为此,首先从工具箱的数据流转换部分拖动脚本组件。出现“选择脚本组件类型”对话框时,请选中第一个选项“源”。
接下来,编辑此脚本组件并选择输入&从最左边的列输出并添加您需要的2个输出列,并为每个列设置正确的数据类型。
然后单击“脚本”选项,选择您的语言(在本例中我选择了Visual Basic 2008),然后单击编辑脚本按钮。
当IDE启动时,添加对Microsoft.Office.Interop.Excel
的引用,并在脚本顶部添加一个Imports语句。然后在CreateNewOutputRows
例程中,获取对工作簿和工作簿的引用。工作表并使用AddRow()
方法输出所需特定单元格的值。从下面的代码中可以看出,我直接从单元格b7&获取值。 c7并将它们转换为合适的类型。
保存脚本并退出IDE,现在可以使用此脚本组件作为数据库插入的源:
该脚本将从您指定的单元格中只读取您想要的2个值,并将它们提供给数据流目标。
虽然这可能看起来比在数据流中删除Excel Source更多的工作,但它为您提供了更多的灵活性和控制。
答案 1 :(得分:2)
如果您可以修改您拥有的文件,您可以为单元格B7
和D7
指定名称(例如,您可以选择名称“日期”和“NAV”)。为此,您需要右键单击该单元格,然后单击“命名范围”。
执行此操作后,您可以选择这些名称(“日期”和“NAV”),就好像它们是您的Excel文件一样。因此,如果您选择数据访问模式为“表格或视图”,则可以select * from FROM [Date$]
,或者将作为另一个工作表使用。
答案 2 :(得分:1)
如果文件的格式不固定(即前导空白行/列),那么我建议您将列名合并到一个字段中,并删除空白元素以使SSIS变得简单。
如果文件必须维护现有格式,请将Excel源对象中的数据访问模式更改为SQL命令,然后使用类似于以下内容的方法排除空行;
SELECT F2, F3
FROM [Sheet1$]
WHERE (F2 IS NOT NULL) AND (F2 <> 'USD P&L' and F2 <> 'Date')
您必须使用数据转换控件来了解生成的数据类型。
答案 3 :(得分:1)
您可以强制Excel为SaveAs()并选择.csv格式吗?
我相信这只会节省价值。