从 Excel 中的制表符分隔文本文件导入 - 引号中的 CR 字符被忽略

从 Excel 中的制表符分隔文本文件导入 - 引号中的 CR 字符被忽略

我有一个TXT用 分隔的大文件TAB
文本用引号括起来,但是当封装的字符串中出现 CR 字符时,Excel 仍会将值分成两行。

有没有什么办法可以强制 Excel 不换行?

答案1

下列答案部分凸显了这一问题。

正如 J Ashley 正确指出的那样,双击与文件->打开(或数据->导入)时 Excel 处理 CSV 文件的方式存在差异。

除了 J Ashleys 的评论之外,我还进行了测试并得出以下结论:

  • 当封装字段包含 \n (LF) 或 \r\n (CR-LF) 时,只需双击即可正确打开,但在使用文件->打开(或导入)时会产生 OP 提到的问题
  • 当封装字段包含 \r (CR) 时,无论您做什么,都会产生 OP 提到的问题。使用 UTF8-BOM、无 bom、双击、文件->打开、数据->导入... 总是出现相同的问题。

因此,似乎没有任何方法可以从 Excel 内部解决这个问题。

可能的解决方法
在文件中执行正则表达式查找/替换,将“\r([^\n])”更改为“\n\1”。这会将所有未跟 LF 的 CR 更改为 LF。\1 只是为了保留尾随字符。

最后的想法
Excel 总是以神秘的方式让我感到惊讶,它如何任意处理平面文本数据文件而不向用户提供反馈……不过,大多数用户会对平面文本文件的概念感到不知所措和困惑。不是 Excel 文件

编辑:Powershell 脚本在大文件中查找替换

$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
Get-Content -Encoding UTF8 -ReadCount 1000 input.txt |
     Foreach-Object { 
        [System.IO.File]::AppendAllLines(
              [string]'output.txt'
            , [string[]]($_) // TODO: add regex replacement here
        ) 
    }

相关内容