【发布时间】:2018-07-08 14:49:54
【问题描述】:
我创建了一个 SSIS 包,目前包含以下步骤:
1 - 文件系统任务 - 复制 Excel 文件 (.xlsx) 以用作 SSIS 包输出的模板。 Excel 文件有 3 个选项卡 - 一个选项卡中没有数据,但具有引用第二个和第三个选项卡上的值的公式。这是最终用户查看的页面(我们称之为 end_user)。
2 - 数据流任务 - OLEDB 源 -> 数据转换 -> Excel 目标(Tab 2,我们称之为 raw_data)。
3 - 电子邮件任务 - 尚未实施,但将在产品的最后阶段出现,以使其完全自动化。
包运行完成后,我打开 Excel 文件,数据已写入 raw_data,但 end_user 上没有任何显示。这是我已经尝试在 Excel 中解决此问题的方法:
- 文件 -> 选项 -> 公式 -> 自动(原来的位置)。我也尝试了所有其他选择(自动,除了数据表、手动、保存前重新计算工作簿的手动,然后返回自动)。
- 确保为 raw_data 和 end_user [i.e.数字、货币、短日期等]
- 尝试将所有数据字段类型设置为常规
- 使用不同的 Excel 文件作为模板。
- 将公式复制到记事本中,用随机数代替 Excel 中的公式,保存并关闭文件,重新打开,然后重新放入公式。
- 删除 SSIS 包 (.dtsx) 并创建一个新包。
-
创建 Excel 宏以在打开文件时强制更新公式。
Private Sub Workbook_Open() Application.Calculation = xlCalculationAutomatic End Sub 在 Office 上运行修复。
- 在 Excel 中按 Ctrl + Alt + F9。 (这会使公式重新计算,并且确实使值按应有的方式显示。)
虽然 Ctrl + Alt + F9 选项使文件按预期显示,但众所周知,这不是一个可接受的解决方案最终用户如何希望一切都能完美运行。有没有人有任何建议,发生这种情况的经验或任何其他见解?非常感谢任何有用的东西!
【问题讨论】:
-
您可以运行脚本任务来执行相同的刷新。我有预感 SSIS 不会有任何与生俱来的功能。 Excel 驱动程序很糟糕。我很惊讶宏选项对你不起作用。也许如果您包含我们可以排除故障的代码?
-
@JacobH - 感谢您的回复和好主意。我在上面的描述中添加了它。
-
Worksheets("end_user").Calculate尝试将此添加到宏中 -
那是负面的先生。没用。
-
您是否尝试使用 xltx 甚至 xltm 文件类型而不是 xlsx 格式?
标签: sql-server excel ssis excel-formula etl