一个excel文件的所有日期都格式化为MM / dd / yy,我通过c#脚本在SSIS中读取了它,但是在遍历记录时,我注意到某些日期被读为dd / MM / yy。 Excel或SSIS以某种方式弄乱了日期格式。由于某些日期已正确格式化为MM / dd / yy,因此我无法找出哪些日期已正确格式化以及哪些日期未正确格式化。有没有一种方法可以确保以特定的日期格式读取Excel工作表?
我尝试将连接字符串中IMEX的配置更改为1。 还尝试在代码中标识日期,但这是不可能的,因为01-02-2019可能是1月2日或2月1日。
我正在使用的连接字符串如下所示:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path + ";Extended Properties=" + "\"" + "EXCEL 12.0 XML; HDR=NO; IMEX=1" + "\"";
我在脚本中打开excel文件并循环浏览各行。
excel的日期如下:
当我在SSIS中阅读它时,会得到以下结果:
对于某些行,您可以看到日期格式更改。
有没有办法确保所有读取日期的格式?
答案 0 :(得分:0)
Excel主要是罪魁祸首。它在SSIS上强制使用自己的数据类型。如果您可以将该列转换为文本,那将是一个不错的开始。 (但大多数情况下是用户输入正确的吗?所以可能不是)
问题可能是,如果计算机(服务器/用户)上的“区域设置”不同,则格式将与Excel受到区域设置驱动的方式不同。 (但如果它们都在同一台机器上,则没有太大的意义)
我看到的第二个问题是SSIS转换为DATE不一致。在SSIS的大多数Excel日期列中,我都将该列转换为Unicode,然后使用SUBSTRING和+在表达式中进行构建。 (尽管直到大多数时候都解决了这个问题,我还是很傻。所以我一直坚持下去。)
因此,我的建议是使用字符串函数建立所需的日期。