SSIS(C#或VB):删除目录中所有Excel文件中的1-12行

时间:2018-08-07 03:43:16

标签: c# sql-server excel ssis etl

在从多个Excel文件导入数据之前,我需要摆脱每个工作表中的前12行。我将使用the code中的this solution进行批量处理脚本任务。

问题:

  • 我应该在脚本中插入哪些代码以删除行? (我想是在//Load the DataTable with Sheet Data so we can get the column header之后);或
  • 如何修改此代码以使其从第13行开始读取excel文件;或者,或者
  • 在删除批量行的脚本之前,我应该插入什么SSIS任务?

1 个答案:

答案 0 :(得分:2)

这是一种循环浏览工作表的方法:

创建一个数据流任务以将工作表名称读取到ADO对象中。

Data flow

第一项是作为源的脚本组件。 我有一个用于Excel电子表格的连接字符串的变量

connstr

创建SheetName的输出

Output Setup

以下是读取标签名称的代码: C#

您基本上是使用oleDB打开电子表格。 将表名称放入数据表中

遍历数据表并写出要输出的行。

确保关闭连接!!!如果不这样做,以后可能会导致错误。

下一步是条件拆分,由于某种原因,结果中的标签名称重复,并且都以'_'结尾。

Conditional Split

下一步是派生一列,以清除exta“'”的工作表名称

DerivedCol

创建对象类型的变量:我将其命名为ADO_Sheets

插入记录集目标对象: 1.将变量设置为刚创建的变量 2.映射用于干净工作表的列

现在回到控制流并设置一个foreach循环控件: enter image description here

配置foreach ... 枚举器:Foreach ADO枚举器 资料来源:ADO_Sheets 变量映射:设置为名为SheetName的变量

我在循环中有一个功能任务,但是为了便于理解,它可能在变量中: SQL

现在,您可以选择此变量以从该页面提取数据。

最后一个是您要运行的数据流任务。

很多工作,但是我经常使用,以至于我想分享!!

将有关连接字符串的信息添加到Excel(xlsx)

Excel 2010 Xlsx文件 使用Xlsx文件扩展名连接到Excel 2007(及更高版本)文件。那是禁用宏的Office Open XML格式。

Provider = Microsoft.ACE.OLEDB.12.0;数据源= c:\ myFolder \ myExcel2007file.xlsx; 扩展属性=“ Excel 12.0 Xml; HDR = YES”;

“ HDR =是;”表示第一行包含列名,而不是数据。 “ HDR =否;”表示相反。

来源:https://www.connectionstrings.com/ace-oledb-12-0/