我有一个文件夹,其中包含每天更换的多个 Excel 文件。我需要一个总行数,它为我提供文件夹中每个单独 Excel 文件的行数总和(即,如果有 3 个文件,每个文件有 10 条记录,我需要 30 的结果计数)。然后,我需要每天运行此程序包以将单个记录添加到日志表中,该日志表将为我提供文件夹中的每日记录计数。我一直在尝试 Foreach 循环容器和 ADO 枚举器,但似乎无法找到解决方案。
问问题
3476 次
2 回答
1
有一个很好的解决方案,您无需使用任何脚本任务即可应用。您只需要使用一个“Foreach 循环容器”、一个“数据流任务”和一个“执行 SQL 任务”
定义变量:
- V_FilesPath-> (String) 将保存文件所在的路径
- V_FileName-> (String) 将填充 Foreach 容器中的文件名
- V_RowCount (Int)
- V_FileRowCount (int)
- V_TotalRecords (int)
定义 Foreach:
将源文件映射到 RowCount 组件并选择变量:V_FileRowCount
在表达式窗格中发出以下问题:
" SELECT " + (DT_STR,10,1252)@[User::V_TotalRecords] + " + " + (DT_STR,10,1252) @[User::V_FileRowCount] + ", 1 + " +(DT_STR,10,1252 ) @[用户::V_RowCount]
一旦你完成了上述你就完成了!
如果您希望查看结果,请添加一个脚本任务(只是为了显示结果)
并粘贴以下脚本代码而不是以“Public Void Main”开头的部分
public void Main()
{
try
{
string Variables = "Loop Counter: " + Dts.Variables["User::V_RowCount"].Value.ToString() + " Total Records in all files: " + Dts.Variables["User::V_TotalRecords"].Value.ToString();
MessageBox.Show(Variables).ToString();
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}
于 2016-12-18T19:55:55.347 回答