想要使用ssis格式的问题将excel文件数据插入到表中

我已经创build了一个SSIS包我拿'excel源'取得excel文件,但我的问题是我需要从Excel文件中取B7值,并将其插入数据库表,请帮助,因为

B7值由expression式生成:= MAX($ B $ 32:C284)

在这里输入图像描述

嗨,我想采取date价值,即'93737452.52' ,和价值的NAV '93737452.52'

并想要插入到表中我现在使用'excel source '来取得excel文件连接'Excel source editor''SQL command' 'Data access mode'select为'SQL command'

现在我需要写什么命令来获得'date''NAV'因为我已经粘贴了excel文件的图片,请让我知道进一步的步骤。

由于您只需要电子表格中的两个非常特定的单元格值,因此我build议使用脚本组件从这些单元格中获取值,而不是使用Excel Source。 Excel Source是为了获得一堆一致排列的行和列,而不是用于拾取单个单元格。

为此,首先从工具箱的“ 数据stream转换”部分拖动一个脚本组件 。 当select脚本组件types对话框出现时,检查第一个选项“Source”。

在这里输入图像说明

接下来编辑这个脚本组件,从最左边的列中selectInputs&Outputs ,并添加你需要的2个输出列,并为它们设置正确的数据types。

在这里输入图像说明

然后单击脚本选项,select您的语言(在这种情况下,我select了Visual Basic 2008),然后单击编辑脚本button。

当IDE启动时,添加对Microsoft.Office.Interop.Excel的引用,并在脚本的顶部为此添加一个Imports语句。 然后在CreateNewOutputRows例程中,获取对工作簿和工作表的引用,并使用AddRow()方法从特定的单元格中输出值。 正如你从下面的代码可以看到的,我直接从单元格b7和c7获取值并将它们转换为正确的types。

在这里输入图像说明

保存脚本并退出IDE,现在可以使用此脚本组件作为数据库插入的源代码:

在这里输入图像说明

该脚本将从您指定的单元格中只读取所需的2个值,并将它们提供给数据stream目标。

虽然这可能看起来比只在数据stream中放置Excel Source更多的工作,但它给你更多的灵活性和控制。

如果您可以修改文件,可以为单元格B7D7命名(例如,您可以select名称“Date”和“NAV”)。 为此,您需要右键单击单元格,然后单击“命名一个范围”。 在excel上命名一个范围

一旦你这样做,你可以select这些名称(“date”和“NAV”),就好像他们是你的Excel文件的工作表。 所以你可以select * from FROM [Date$] ,或者如果你select你的数据访问模式作为“表或视图”,它可以作为另一个表单提供。

如果文件的格式不固定(即引导空白的行/列),那么我build议您将列名合并成一个字段,并删除空白元素,以使SSIS变得简单。

如果文件必须维护现有格式,请将Excel源对象中的数据访问模式更改为SQL命令,然后使用类似于以下内容的内容来排除空行;

 SELECT F2, F3 FROM [Sheet1$] WHERE (F2 IS NOT NULL) AND (F2 <> 'USD P&L' and F2 <> 'Date') 

您将不得不使用数据转换控件来理解结果数据types。

你可以强制Excel保存为()并select.csv格式?

我相信这只会节省价值。