制表符分隔文本的复制粘贴会导致 Excel 中出现奇怪的格式?
Posted
技术标签:
【中文标题】制表符分隔文本的复制粘贴会导致 Excel 中出现奇怪的格式?【英文标题】:copy paste of tab delimited text results in strange formatting in Excel? 【发布时间】:2014-12-29 18:07:38 【问题描述】:我的源文件是一个制表符分隔的文本文件 (*.txt)。我正在从 *.txt 复制粘贴到空白 *.xlsx 工作簿。我的计算机上安装了 Microsoft Office Excel 2010。我的电脑上安装了记事本++。
制表符分隔的文本文件是使用“\t”制表符将数值分隔到列中的普通文本文件。示例:
0 0 0.5528369
0 1 0.0
1 0 0.1230636
1 1 0.0
1 0 0.2113225
1 1 0.0
3 0 0.0752651
3 1 0.0
使用相同的示例,这里是显示源文件中字符的屏幕截图:
问题 #1:从文本文件复制粘贴到工作表后,excel 删除选项卡,将每一行文本压缩在一起,例如:
作为一种解决方法,我使用 Notepad++ 中的文本替换功能将源文本中的每个选项卡替换为逗号。此操作的结果如下所示:
0, 0, 0.5528369
0, 1, 0.0
1, 0, 0.1230636
1, 1, 0.0
1, 0, 0.2113225
1, 1, 0.0
3, 0, 0.0752651
3, 1, 0.0
使用逗号复制/粘贴到此版本的 Excel 后,我现在可以执行 Excel 功能 Data->Text-to-columns。但是,这也存在问题。
问题 #2:粘贴到 excel 中的文本副本不被视为数字。将数据类型从 General 切换到 Number 不起作用。它仍然是文本。仔细检查后,Excel 似乎在每个数字的末尾添加了空格,这使其无法将其识别为数字。例如:
目前我不得不手动编辑 excel 中的每个单元格以删除多余的空白,这使我能够将类型设置为数字。
这两个问题都源于执行微不足道的复制粘贴操作,我不知道为什么会发生这些问题或如何以直接的方式解决它们。我想如上所述将粘贴复制到 excel 中而不会出现任何问题。
【问题讨论】:
你能在 Notepad++ 中检查你是否有尾随空格吗?我通常将制表符分隔的数据复制粘贴到 Excel 中没有问题...您也有哪些区域设置? @pnuts:源文件还有许多其他非制表符分隔的数据行,使用 Get External Data 导入文件导致我不得不执行清理操作以删除多余的行.由于涉及人工劳动,因此不是理想的解决方案。 @captain:没有尾随空格。我用屏幕截图编辑了我的 OP,显示了隐藏的字符,包括标签。你可以看到每一行都以回车和换行结束,但没有空格(空格会显示为一个橙色的小点,这是notepad++“显示所有字符”功能的一个特点) 这是一个新的、“干净”的 Excel 文件吗? 【参考方案1】:此解决方案解决了这两个问题。
虽然文本被压在一起,如 OP 所示,制表符仍在字符串中。话虽如此,解决方案是:
1) 复制粘贴到单元格 A1 中(文本会挤在一起)
2) 选择 A 列
3) 选择 Data->Text-to-columns 并在对话框窗口中选择制表符分隔格式
4) 点击完成
5) 选择 A->C 列中的数据并将类型从 General 更改为 Number。
Excel 设计为将文本压缩在一起的原因并不明显。这给人一种误导性的印象,即制表符已被剥离。但是,制表符在那里。此外,在应用 text-to-columns 后,每个单元格中的值现在可以从 General 转换为 Number 类型而不会出现问题(末尾没有添加空格)。
【讨论】:
我发现如果我将数据粘贴到notepad++中,然后从notepad++中重新复制数据并粘贴到excel中,我会得到预期的数据行为到多列中。【参考方案2】:此解决方案避免了使用文本到列
我遇到了同样的问题。我正在将数据输出到<pre>
标签内的浏览器。我也在数据列之间使用\t
。当我粘贴到 excel 中时,所有内容都进入一列。
我将数据粘贴到 notepad++ 中以确保选项卡位于所有列之间,而且确实如此! 然后我从 notepad++ 中复制数据并将其粘贴到 excel 中,结果按预期工作!
注意:你可以使用普通的记事本并获得相同的效果
更好的解决方案,发现 here,您可以将数据输出到 <textarea>
,然后从中复制。可以找到 here 的原因,以及对实际情况的解释。
【讨论】:
以上是关于制表符分隔文本的复制粘贴会导致 Excel 中出现奇怪的格式?的主要内容,如果未能解决你的问题,请参考以下文章