首页 > 解决方案 > SSIS(C# 或 VB):删除目录中所有 excel 文件中的第 1-12 行

问题描述

在从多个 excel 文件导入数据之前,我需要删除每个工作表中的前 12 行。我将使用此解决方案中的代码进行批量处理脚本任务。

问题:

标签: c#sql-serverexcelssisetl

解决方案


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

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

数据流

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

connstr

创建了 SheetName 的输出

输出设置

这是读取选项卡名称的代码: C#

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

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

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

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

条件拆分

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

派生科尔

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

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

现在回到控制流并设置一个 foreach 循环控制: 在此处输入图像描述

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

我在循环中有一个函数任务,但它更易于理解,它可能在变量中: SQL

该变量现在是您从该页面提取数据的选择。

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

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

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

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

提供者=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/


推荐阅读