我们可以在运行时而不是在设计时将OleDB Source映射到Excel Destination吗?

时间:2013-02-18 03:55:55

标签: ssis

我正在尝试创建一个将csv数据导出到excel文件的SSIS包。将从C#调用此包,将csv文件作为包的输入。我是SSIS的新手,我已经能够用相同的标题产生预期的结果。

我选择了以下方法 -

  1. 脚本任务 - 从csv头创建脚本以创建临时表,批量插入,Excel表脚本。
  2. 执行SQL任务 - 在数据库中创建临时表
  3. 执行SQL任务 - 将csv数据批量插入表
  4. 执行SQL任务 - 创建Excel文件
  5. 数据流任务 - OleDB源到Excel目标
  6. 执行SQL任务 - 删除创建的临时表
  7. 我面临的挑战是我的csv可能有不同的标题(文字和标题数量可能不同)。我想要一个包来达到这个目的。

    如果标题不同,上面步骤5中OleDB Souce到Excel Destination之间的映射不适用于动态标头,并且在excel输出中产生意外结果。有没有办法可以在运行时而不是在设计时决定这些映射。

1 个答案:

答案 0 :(得分:0)

我不相信您可以在SSIS运行时指定数据流的列或列映射。您可以即时构建SSIS包,这将允许您的C#代码创建列映射,但必须在包运行之前创建映射。有关详细信息,请参阅MSDN中的Building Packages Programmatically

另一方面,如果你要做的就是将CSV文件转换为Excel电子表格,那么使用Office对象模型的Workbook.SaveAs方法对我来说似乎合乎逻辑。