在 Excel 中复制带换行符的单元格并将其粘贴到记事本中时,文本会粘贴到一行上。这是为什么?
答案1
这是由于电子表格的工作方式所致。假设您有一个充满数据的电子表格。如果您要复制整行数据,然后将其粘贴到记事本中,则所有数据都需要在一行上。这是因为如果您要复制另一行数据并粘贴,下一行数据需要在一行上。如果您复制的第一行中有换行符,则数据将不再是两个线性行。如果您将数据从记事本复制回电子表格,则无法正确粘贴。
答案2
当您使用记事本时确实如此,记事本是 Microsoft 的基本文本编辑器,已预装在 Windows 中。
但是,您可以使用更高级的文本编辑器,例如 PSPad 或 Notepad++(都很出色,而且免费),并且可以转移换行符。
Excel:
标记单元格,然后复制粘贴到记事本++:
相同的内容粘贴到记事本(Windows 默认编辑器):
请注意,在这两种情况下,引号都是自动添加的!
更好的编辑器还为您提供了显示控制字符(如换行符 (LF) 和回车符 (CR))的选项。在 Notepad++ 中,它看起来像:
结论是:根据您的需要选择工具。如果您需要在编辑器中保留单元格边界,但单元格内容可能会发生一些变化,请使用记事本。如果您需要保留单元格内容(包括换行符),并且单元格边界的 1:1 可重复性并不重要,请使用其他编辑器。
大规模处理此类数据
如果您需要同时以 1:1 的比例保留单元格边框和单元格内容,则可能会遇到问题。
可能有更智能的解决方案,但在这种情况下,我所做的是用任何语言(VBA、Python 或任何您最喜欢的语言)编写一个小程序,读取内容并为换行符添加占位符字符串(简单如“###Linebreak###”,稍后可以用 CR 和 LF 控制字符重新替换。当然,这是繁琐的工作,只有当您必须处理大量数据时才有意义。
您可能还会遇到添加引号的问题。乍一看,这些引号可能有助于保留单元格边界,即使包含换行符也是如此。但是,您的单元格可能将引号作为原始内容的一部分,然后您就会遇到新的问题。对此有多种解决方案,但需要您注意。
答案3
计算中使用三种不同的换行符:
- Unix 和 macOS 10.0+ 的行尾使用换行符 (
LF
) - Macintosh(macOS 10.0 之前)行尾使用回车符 (
CR
) - Windows 行尾使用回车符和换行符的组合 (
CRLF
)
这是打字机的工作方式的保留。
Excel 使用这些换行符的组合来表示具有多行的单元格:
- 单元格之间由字符分隔
Tab
。 - 行与行之间由字符分隔
CRLF
。 - 多行单元格仅使用字符分隔每行
LF
。
当您将工作簿保存为.txt
文件并使用支持显示这些字符的文本编辑器打开它时,这一点变得明显。
记事本仅将其CRLF
作为换行符处理,并忽略LF
或CR
本身。它们仍在文档中,但不会以任何方式显示。
笔记:来回粘贴时您不会看到这一点,因为 Notepad++ 会自动为您调整行尾,而常规记事本则不会。
答案4
Excel 使用 LF 来表示单元格中的换行符。记事本并不认为这是换行符,因为 Windows 通常使用 CRLF 来表示换行符。
Notepad++ 比相对简单的记事本更智能,因此也将 LF 解释为换行符。