CSV文件日期格式在Excel 2010中显示异常的技术求助
解决Excel 2010解析MM-dd-yyyy格式CSV日期混乱的问题
我太懂这种CSV日期解析的坑了——Excel的自动格式猜测在遇到跨区域的日期格式时简直是灾难,尤其是你这种MM-dd-yyyy格式,很容易和系统默认的dd-MM-yyyy混淆,导致12号及之前的日期被颠倒,13号之后因为没有13月才被迫正确解析。下面给你几个靠谱的解决方法,都是Excel 2010能直接用的:
方法1:用数据导入向导精确控制(最推荐)
直接打开CSV时Excel会瞎猜格式,用导入向导可以手动指定每列的解析规则,百分百准确:
- 打开Excel 2010,新建一个空白工作簿
- 切换到数据选项卡,点击自文本,选中你的CSV文件
- 文本导入向导第一步:选择「分隔符号」,点击「下一步」
- 第二步:勾选「逗号」作为分隔符,同时确认「文本识别符」是双引号
"(你的数据是用双引号包起来的),点击「下一步」 - 第三步:选中日期所在的那一列,在「列数据格式」里选择日期,然后在下拉菜单里选MDY(对应
MM-dd-yyyy的格式),最后点击「完成」 - 导入后所有日期都会被正确识别成Excel的日期格式,之后你可以右键单元格调整显示样式到你想要的样子
方法2:修改CSV文件强制Excel识别
如果不想用导入向导,也可以给CSV加个“标记”让Excel不瞎猜:
- 用记事本打开你的CSV文件
- 把每个日期的双引号里面开头加个单引号,比如把
"01-12-2013 14:23:38.000"改成"'01-12-2013 14:23:38.000" - 保存后用Excel打开,日期会被当成文本导入,然后你可以用公式转换成日期:在空白列输入
=DATEVALUE(LEFT(A1,LEN(A1)-12)) + TIMEVALUE(RIGHT(A1,12)),下拉填充后,把公式列转换成日期格式就行 - 另一种方式是把日期改成
yyyy-MM-dd HH:mm:ss.SSS格式(比如把01-12-2013改成2013-01-12),这种格式Excel几乎不会解析错误,用记事本的替换功能就能批量改
方法3:临时调整系统区域设置(不推荐,影响全局)
如果只是临时处理这一个文件,可以改下系统的日期格式:
- 打开Windows控制面板 → 区域和语言 → 格式选项卡,把短日期格式改成
MM-dd-yyyy - 再打开CSV文件,Excel就会按这个格式解析了,处理完记得改回原来的格式,不然其他软件的日期显示也会变
为什么会出现这个问题?
本质是Excel 2010会根据你的系统区域设置自动猜测日期格式,比如中文系统默认是
dd-MM-yyyy,所以01-12-2013会被当成12月1日;但01-13-2013里的13超过了月份的范围(1-12),Excel才会切换到MM-dd-yyyy格式解析,这就导致了前半部分日期混乱,后半部分“偶然”正确的情况。
内容的提问来源于stack exchange,提问作者Comic Coder
相关产品推荐
相关产品推荐

