Microsoft Excel将编写包含多行字段的CSV文件。换行符为0A(UNIX样式),而不是0 D 0A。
但是,它将无法正确读取它刚写入的.csv文件。包含0A换行符的字段将成为新行。如何克服这一点?
此Excel电子表格保存为名为t-xl.xlsx和t-xl. csv的CSV文件。
PS H:\r> Format-Hex .\t-xl.csv
Path: H:\r\t-xl.csv
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 66 31 2C 66 32 0D 0A 31 2C 66 6F 72 0D 0A 32 2C f1,f2..1,for..2,
00000010 22 6E 6F 77 0A 69 73 0A 74 68 65 22 0D 0A 33 2C "now.is.the"..3,
00000020 74 69 6D 65 0D 0A time..
当加载t-xl.csv时,Excel似乎会记住并正确处理换行符(就像在t-xl.xlsx中一样)。
但是,当使用Data > From Text时,它将无法正确处理换行符。
至少有一个CSV参考描述了对字段嵌入换行符的支持。Microsoft Excel不支持此功能的原因是什么?网址:http:www.creativyst.com/Doc/Articles/CSV/CSV01.htm
2条答案
按热度按时间cu6pst1q1#
Excel旧文本导入向导不将带引号的换行符视为不拆分字段。
如您所见,直接用Excel打开文件将遵守引用的换行符。
如果你有Excel 2010+,你可以使用Power Query从
Text/CSV
到Get & Transform
。有一个选项可以启用此功能(我相信默认情况下是启用的)。我所知道的遗留向导的唯一解决方法是预处理文件,用其他东西替换引用的换行符,然后在导入后再次处理它,用换行符替换“其他东西”。
gj3fmq9x2#
我用Replace(CTRL+H)更改了我的Excel文件:
查找:[按CTRL+J]替换:【空间】