0

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

我采用了以下方法 -

  1. 脚本任务 - 从 csv 标头创建脚本以创建临时表、批量插入、excel 表脚本。
  2. 执行 SQL 任务 - 在数据库中创建一个临时表
  3. 执行 SQL 任务 - 将 csv 数据批量插入表中
  4. 执行 SQL 任务 - 创建 Excel 文件
  5. 数据流任务 - OleDB 源到 Excel 目标
  6. 执行 SQL 任务 - 删除创建的临时表

我面临的挑战是我的 csv 可能有不同的标题(文本和标题数量可能不同)。我想要一个包来达到这个目的。

由于标题不同,上述步骤 5 中 OleDB 源到 Excel 目标之间的映射不适用于动态标题,并且在 excel 输出中给出了意外结果。有什么方法可以在运行时而不是在设计时确定这些映射。

4

1 回答 1

0

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

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

于 2013-02-18T23:35:24.590 回答