将带有换行符的txt文件导入Excel

10

在进行导出到Excel的工作时,我发现了以下问题。

如果您创建了一个表格,其中一个单元格有换行符,并将文档保存为txt文件,则它将显示如下:

"firstLine<LF>secondLine"<TAB>"secondColoumn"

当我在Excel中打开这个文件时,换行符消失了,第一行只有一个单元格的值为firstLine

你知道是否有可能保留换行符吗?

编辑:适用于Excel2010。不知道其他版本是否有不同的行为。

编辑2:重现步骤:

  1. 打开空白的Excel表格
  2. 输入文本(第一列带有换行符,第二列不重要)
  3. 保存为Unicode文本(txt) //所有其他txt也不能使用
  4. 关闭Excel文件
  5. 文件->打开
  6. 在即将出现的对话框中不要进行任何更改。

现在Excel文件有2行,这是错误的。


我正在尝试重现您的步骤。您是在哪里创建表格?在Excel中吗?您将其保存为什么类型 - 文本(制表符分隔),MS-DOS文本,Unicode文本还是其他类型?您是如何“打开”文件的?导入它,拖放到Excel中,还是转到“文件>打开”? - JimmyPena
你是按 Alt+Enter 来获取换行符的,对吗? - JimmyPena
这是正确的。换行符会保存为上面显示的换行符。 - T3rm1
2个回答

5
我终于解决了问题!耶 :D
CSV:
德语版的Excel需要使用分号作为分隔符,逗号不起作用。请注意:仅在文件以UTF-8带BOM编码时才是这样的。如果是ASCII编码,则逗号可以用作分隔符。
TXT:
编码必须是UTF-16LE,并且需要使用制表符作为分隔符。
重要提示: 如果您使用“文件->打开”对话框并“导入”它们来打开文件,则仍然会显示不正确的结果。将它们拖入Excel或双击打开则可行。

但是,这会导致Excel丢弃任何不包含非数字字符的单元格的前导零。 - Darren Ringer

1

这不是一个问题 - 在预期行为的意义上 - 当您将文本保存为UnicodeText (tab delimited)时,这是固有的。

如果您将文件保存为Unicode,然后执行以下操作之一:

  1. 在记事本中打开它
  2. 在Excel中导入它

您会发现带有换行符的单元格被""包围。

下面的示例显示了两个换行符

  • A1使用Alt+Enter分隔的条目
  • B1使用公式CHAR(10)的条目 initial

图片还显示了记事本在保存Unicode版本时看到的内容

建议解决方法1-手动方法

  1. 在Excel中,选择编辑>替换

  2. 点击“查找内容”框

  3. 按住Alt键,在数字键盘上键入0010step 3

  4. 用双竖线分隔符替换

    Step 4

  5. 保存为Unicode格式

  6. 需要时,可以反转此过程以重新插入换行符

这在VBA中很容易实现

建议解决方案2 - VBA替代方案

Const strDelim = "||"

Sub LBtoPIPE()
ActiveSheet.UsedRange.Replace Chr(10), strDelim, xlPart
ActiveSheet.UsedRange.Replace "CHAR(10)", strDelim, xlPart
End Sub

Sub PIPEtoLB()
ActiveSheet.UsedRange.Replace strDelim, Chr(10), xlPart
ActiveSheet.UsedRange.Replace strDelim, "CHAR(10)", xlPart
End Sub

谢谢你的回答。不幸的是,我不能使用变通方法来解决问题。我本来希望这是Excel的一个bug或者是我的设置出了问题。在我看来,这种行为是错误的。如果我保存了一个有换行符的文件,在加载时它们应该仍然存在 :/ - T3rm1
@T3rm1 没问题。我很好奇为什么你不能部署这个解决方法? - brettdj
这两种方法都需要用户做一些事情,而你通常认为它应该是“应该可以自动完成的”。 - T3rm1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接