SSIS:CSV 提取在 excel 中打开 - 一些字符串值显示为日期

SSIS: CSV extracts opened in excel - some string values shown as date

我有一个生成 csv 提取的 SSIS 包。
提取物中有一列说 Col1,其值格式为 integer/integer 或仅整数
例如
22
5/27
9/114

Col1 的平面文件连接数据类型为 String[DT_STR] 宽度 100。col1 从数据类型为 varchar(100) 的 SQL DB table 列加载。
提取物生成正常,在文本编辑器中打开提取物时一切正常。
但是收到摘录的客户在 excel 中打开它并抱怨某些值显示为日期。
例如以上数值显示为
22
5 月 27 日
9/114

我知道用 excel.
打开 csv 时存在的问题 ssis 中是否有任何选项可以强制列将值显示为字符串,即使在 excel?
中打开也是如此 或此问题的任何其他可能的解决方案,任何人都可以提出建议。

谢谢!

如果您使用“数据”选项卡上的“来自 Text/CSV”打开文件,它将正确地(在我有限的测试中)选择将列数据类型设置为文本。我看不出有任何方法可以使用 File/Open 或双击文件资源管理器并让 Excel 根据需要打开文件。
如果文件是制表符分隔的,打开一个空白工作表,将列类型设置为文本,然后将数据粘贴到(来自,例如记事本)中也可以。
我认为“数据”选项卡是最简单的方法。

如果您可以用双引号将列括起来并在其前面放置一个 = 符号,Excel 将正常显示它。您可以将 ="1/1" 写入 CSV,而不是 1/1。请参阅下面的屏幕截图中的示例。

但是,这有其自身的副作用:虽然它在 Excel 中对用户来说看起来符合预期,但 CSV 文件中存储的实际数据现在与用户预期的略有不同,这可能是如果用户手动编辑该文件,或者如果该文件将被送入另一个应用程序以进行进一步处理,则会出现问题。您的用户可能没有意识到这种差异。

如果不需要这些副作用,那么唯一合适的解决方案是培训客户如何 import 将 CSV 文件转换为 Excel,而不仅仅是 open Excel 中的 CSV 文件弄乱了 data-formats。强制执行此操作的一种方法是使用 *.csv.txt 扩展名而不是 *.csv 保存文件。这样,用户就不能简单地双击它来 open 它在 Excel.

您可以在此处看到更深入的讨论

Stop Excel from automatically converting certain text values to dates