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

SSIS (C# or VB): delete rows 1-12 in all excel files in directory

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

问题:

这是一个循环遍历sheets的方法:

创建数据流任务以将 sheet 个名称读入 ADO 对象。

第一项是作为源的脚本组件。 我有一个用于 Excel Spreadsheet

的连接字符串的变量

创建了 SheetName

的输出

下面是读取选项卡名称的代码:

您基本上是在使用 oleDB 打开 spreadsheet。 将 table 名称放入数据 table

循环数据 table 并写出要输出的行。

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

下一步是有条件的拆分,由于某种原因,结果有重复的选项卡名称,它们都以“_”结尾。

下一步是导出一个列来清理 exta“'”的 sheet 名称

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

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

现在回到控制流程并设置一个 foreach 循环控制:

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

的变量

我在循环中有一个Function Task,但它更易于理解,它可以放在变量中:

此变量现在是您 select 用于从该页面提取数据的变量。

最后是你要运行的数据流任务。

很多工作,但我经常使用它我想我会分享!!!

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

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

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx; 扩展属性="Excel 12.0 Xml;HDR=YES";

"HDR=Yes;" 表示第一行包含列名,而不是数据。 "HDR=No;"表示相反。

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