【问题标题】:Excel format lost while populating thru SSIS通过 SSIS 填充时 Excel 格式丢失
【发布时间】:2015-07-10 00:14:15
【问题描述】:

我有一个格式化的 Excel 目标,其中一列是百分比,另一列是货币。我正在使用 SSIS 使用 sql 表中的数据加载这个 excel。但是加载后没有格式化excel。发生了什么?

【问题讨论】:

  • 您的问题缺少一些关键的细节点:SQL Server 版本、Excel 文件格式版本以及您正在应用的步骤。

标签: excel ssis formatting


【解决方案1】:

我能够从 Visual Studio 2010 中创建的 SSIS 包中将两列信息(百分比和美元值)导出到 Excel 文件(97-2003 格式)。数据来自使用 SQL Server 的服务器上的表2012.

步骤:

  1. 创建了一个 Excel 文件,其中包含一个名为 Percent 的列和另一个名为 Cost 的列。两者都进行了相应的格式化并位于第一行。

  2. 将文件保存为 97-2003 格式,然后将其关闭。

  3. 在数据库中创建了一个表并填充了几条记录。

创建表 test_export ( 我的百分比数字(18,2), 美元数字(18,2)) insert into test_export values (2.1, 50.00) insert into test_export values (4.5, 120.00)

  1. 打开 Visual Studio 2010 并创建了一个新的 SSIS 包。已创建到数据库的 OLEDB 连接。

  2. 在控制流选项卡下添加了一个数据流任务,添加后双击它。现在应该会突出显示“数据流”选项卡。

  3. 添加一个 OLE DB 源并指向新添加的数据库连接,在数据访问模式下选择表或视图,然后选择在步骤 #3 中创建的表。选择确定按钮。

  4. 添加一个 Excel 目标,确保为其创建一个新的 Excel 连接管理器并指向 Sheet1$。确保指出第一行包含标题。选择确定按钮并将 OLE DB 源任务连接到下面的 Excel 目标任务。由于只涉及数字,因此无需在两者之间应用数据转换任务。但在 Excel 目标任务中,请记住选择映射并从左到右连接哪些源列与哪些目标列匹配。

  5. 在“解决方案资源管理器”窗格中,右键单击解决方案并从下拉菜单中选择“属性”。打开左侧的配置属性并在其下选择调试。在 Debug Options 下的右侧,查找 Run64BitRuntime 并将其从 True 更改为 False(如果您尚未这样做)。选择确定按钮。

  6. 运行 SSIS 包。

  7. 当所有任务都显示为绿色表示已完成时,停止 SSIS 包。

  8. 打开 Excel 文件,它现在将包含从数据库表中导入的值,其中 Excel 百分比和美元格式在步骤 #1 中保留。

我在测试中运行了这些步骤,一切正常。如果您的格式没有被保留,那么您可能会遗漏一个步骤。

希望这会有所帮助,如果它回答了您的问题,请说明。

【讨论】:

  • 超级老问题,但是当一行没有特定列的数据时,我会出现问题 - 导致所有后续行丢失格式。如果我有 10 行,而第 5 行没有值,那么第 6-10 行会丢失前几行具有的任何格式(边框、对齐方式、数据格式)。
  • 已经快三年了,您几个小时前刚刚阐述的关键细节并未包含在原始问题中。我希望你已经找到了问题所在。如果不是,只需在数据控件中应用派生列解决方法来检查 NULL。看看下面的链接:stackoverflow.com/questions/1840909/…
  • 谢谢,这看起来很有帮助。我试试看!
【解决方案2】:

我遇到了同样的问题。我所做的是:

  1. 对列应用条件格式。 see attached picture
  2. 同样重要的是,在第一行,模型行,填充数字/文​​本值,以便 ssis 将数字导出为数字而不是字符串model row

如果您的模板在 ssis 开始导出数据的位置之前包含多行,则您可能需要更多的模型行。 (我需要 4 个)。无论您从哪里开始导出,这些行都必须是文档中的第一行。

  1. 您可以隐藏模型行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 2018-04-07
    相关资源
    最近更新 更多