导入CSV时如何保持数字不受数字影响?


8

当我在Numbers中打开CSV文件时,它“帮助”通过剥离前导零,将它识别为日期的内容转换为它来识别为数字的字段等。

例如,您可以在Numbers电子表格中键入UPC代码 005566778899 ,Numbers会自动将其转换为 5566778899 。这不是我想要的......

但是,顺便说一下 一世 使用Numbers,我用数千个带有前面零的UPC代码打开数据库。其中一些还包含 日期 哪些号码也会重新格式化。基本上我不想要任何这些功能,我希望我的内容不会孤立。

打开CSV文件时,如何让Numbers保持数据完整?

导入后将字段转换为文本将无济于事,因为数据已经搞乱了......


你是什​​么意思“数据已经搞乱了”?你的意思是转换成文本 文件是开放的?
Daniel

打开文件后,Excel和Numbers都会更改您的所有数据。所以无论我必须做什么,我必须在打开文件之前这样做。
henryaaron

Answers:


7

如果CSV文件中的字段以撇号开头( ' ),Excel和Numbers都会将该字段视为文本,而不是使用任何数字格式进行渲染。

您的CSV文件似乎试图通过用双引号括起数字字段来强制进行文本呈现,但是Numbers和Excel似乎没有注意到双引号应该被视为字符串。诀窍似乎是修改CSV文件,因此他们使用“单引号开头”技巧而不是数字字段中的“双引号”技巧,但保留涉及标点符号的文本字段的双引号(包括逗号,引号,换行符等)。

要处理CSV文件以便他们执行此操作,您可以创建Automator应用程序。

在Automator中,创建一个新的应用程序。

它将只有一个动作:运行Shell脚本(将输入作为参数传递)。这是脚本:

for f in "$@"
do
    perl -pi -e "s/\"\"([0-9A-Za-z: \.\-+]+)\"/'\1/g" "$f"
done

将生成的应用程序保存在桌面上。删除要在应用程序图标上的Numbers中使用的任何CSV文件,它们将被转换,因此Numbers应将字段中的数字保留为文字数字,而不是格式化它们或丢弃信息。

在尝试之前备份您的数据;记录字段中特别奇怪构造的字符串可能会在此处抛出结果。

enter image description here


使这项工作看起来需要一些互动。这个讨论会更好 发生在聊天中
Daniel

0

具体来说,这是如何处理 领先的零 。我认为你的问题更多的是关于单元格格式而不是自动更正。

如前所述,自动更正功能本身是一个系统项,需要从“系统偏好设置”中禁用。


将单元格转换为此格式无济于事,因为数据已经与...混淆了
henryaaron

1
如果你格式化单元格,我本来期望零回来 - 如果Numbers破坏性地删除那些真正糟糕的导入的那些零。也许你必须在导入之前格式化单元格。
Adam Eberbach

这绝对是。
henryaaron
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.