excel导入csv数据出错:此文本文件包含的数据无法放置在一个工作表中。。。

从linux上取了一些数据回来,格式是csv,编码utf-8,准备读入Excel。
按照惯例,获取外部数据–自文本,然后一路操作下来结果如下图:

excel导入csv数据出错:此文本文件包含的数据无法放置在一个工作表中。。。_第1张图片

排除掉编码问题后,网上查了下,信息不多,有的说是格式问题,什么存在空行,换行符过多等等。。
删除无用空行、空格、换行符后还是不行。纳闷了,理一下思路,除了这些原因,还有什么?想到我的文件是linux系统中来的,难道是linux和window之间不同的原因吗?
用UE打开文件,栏底的状态栏显示unix,进行如下操作转为DOS:
excel导入csv数据出错:此文本文件包含的数据无法放置在一个工作表中。。。_第2张图片
然后按照惯例,获取外部数据–自文本,然后一路操作下来,Excel顺利完成读取!

虽然问题解决了,但是只知其然,不知其所以然,进一步分析原因:有可能是一些特殊或者“看不见”的字符影响。
用UE打开原始文件,这里都勾上:
excel导入csv数据出错:此文本文件包含的数据无法放置在一个工作表中。。。_第3张图片
看看显示效果:
excel导入csv数据出错:此文本文件包含的数据无法放置在一个工作表中。。。_第4张图片
原文件(或者提前copy一个副本)转为DOS文件后再打开:
excel导入csv数据出错:此文本文件包含的数据无法放置在一个工作表中。。。_第5张图片

可以看出,换行符变了,行末,比较暗,并且怎么是这种形状,UE有的地方也不太友好,用notepad++打开文件看看对比:

excel导入csv数据出错:此文本文件包含的数据无法放置在一个工作表中。。。_第6张图片
excel导入csv数据出错:此文本文件包含的数据无法放置在一个工作表中。。。_第7张图片

可以看出:主要是因为window和unix对换行符的定义不同导致Excel读入出错;

具体区别如下:
CRLF, LF 是用来表示文本换行的方式。CR(Carriage Return) 代表回车,对应字符 ‘\r’;LF(Line Feed) 代表换行,对应字符 ‘\n’。由于历史原因,不同的操作系统文本使用的换行符各不相同。主流的操作系统一般使用CRLF或者LF作为其文本的换行符。其中,Windows 系统使用的是 CRLF, Unix系统(包括Linux, MacOS近些年的版本) 使用的是LF

你可能感兴趣的:(excel导入csv数据出错:此文本文件包含的数据无法放置在一个工作表中。。。)