阻止Excel将字符串转换为数字

12
我在我的CSV文件中有一列包含由逗号分隔的数字字符串。即使我想将其视为文本,Excel仍会将它们转换为数字。
示例:

我在我的CSV文件中有一列包含由逗号分隔的数字字符串。即使我想将其视为文本,Excel仍会将其转换为数字。

示例:

470,1680 get converted to 4,701,680

然而,我希望它保持为470,1680。

我试图将单元格格式设置为文本,但这会删除原始的逗号。我该如何实现这一点?


1
你还有原始的CSV文件吗? - Jerry
@Jerry 是的,在源代码中它显示正确。只是在查看时不显示。 - MagentoMan
你能给我们提供一到两行完整的CSV样本吗? - John Chrysostom
是的,这就是它的转换方式。然而,如果你看源代码,它的格式可能会有所不同。 - MagentoMan
另一个可能的重复问题:https://dev59.com/1nVC5IYBdhLWcg3wZwJT - John Y
显示剩余4条评论
7个回答

8
我发现有效的方法是这样的:
="12345678901349539725", "CSV value2", "Another value"

重点在于这个值是一个包含="{数字}"的字符串。不知怎么地,Excel会尊重这种模式。

也许更好的写法是:

"="12345678901349539725"" 

但是在您的代码中不要过度使用引号。


7

将 .CSV 文件重命名为 .TXT 文件。使用 Excel 打开文件,会弹出文本导入向导。告诉 Excel 这是一个分隔符文件,并且逗号是分隔符。然后 Excel 会给您一个屏幕,允许您为每列分配格式。选择要处理的列的文本格式。导入并完成!

为了测试此操作,我创建了以下 .CSV 文件:

test1,"470,1680",does it work
test2,"120,3204",i don't know

直接在Excel中打开CSV文件时,我得到了以下结果:
test1    4,701,680    does it work
test2    1,203,204    i don't know

使用我的方法打开时,我得到了以下结果:
test1    470,1680    does it work
test2    120,3204    i don't know

这不是您想要的结果吗?


不起作用,谢谢。列没有对齐。 - MagentoMan
有什么问题没正常工作吗?我刚在公司的电脑上完成了这个任务。如果可以的话,我很乐意提供帮助。 - John Chrysostom
显然不行...因为Excel不知道哪些逗号是“真正”的定界符,哪些不是。但这超出了楼主问题的范围。 - John Chrysostom
似乎你的想法是可行的,但我无法正确对齐列。 - MagentoMan
嗯...它们为什么对不齐呢?是不是在那一列中分开了你想要保持在一起的数字?如果是这样,那么你可能正在使用格式不正确的CSV文件。CSV文件中包含逗号的任何字段都必须用引号括起来...这告诉计算机“嘿,这个引号是数据的一部分,不是定界符!”如果您可以发布文件中的一两行内容,我们可能能够帮助解决对齐问题。 - John Chrysostom
显示剩余4条评论

2

如果您可以操作 CVS 文件,请在每个数字前加上 ' 符号。


0

好的...所以,该文件使用回车+换行符来标识新记录的开始。出于我不理解的原因,在每个记录中也有随机位置的换行符,但没有回车符。

为了解决这个问题,我使用Notepad++打开文件,并使用“扩展”搜索模式进行查找和替换。我用空白替换了\n。现在,使用我之前推荐的解决方案,数据可以在Excel中正确打开。

当然,您可以使用任何其他程序(而不仅仅是Notepad++)进行此字符替换。这有帮助吗?


0
尝试这个,其中DocNumber实际上是文本: 选择(CHAR(10)+ DocNumber)作为DocNumber 通过添加一个不可见的文本字符,它会欺骗Excel将其变成文本字符串。 你也可以使用CHAR(32)。

0
尝试了一些随机字符后,我确认这个方法是可行的:
="003"
无论将什么奇怪的东西放在引号中,如数字、日期等,都能正常工作。 这是告诉Excel这个来自CSV文件的值是一个字符串的确切方式。 我需要这个方法,因为CSV文件很容易在程序中生成,但用户会通过Excel自动打开该文件。

0
问题是关于Excel千位分隔符。我的快速解决方案很简单,并且对我有效。
  1. 进入Excel-->文件-->选项-->高级
  2. 找到“千位分隔符”。可能你的分隔符是“,”。
  3. 更改分隔符如“x”等。
完成后,建议将分隔符切换回“,”。

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