虽然我尽量避免它,但我偶尔不得不在 Excel 中打开一个 CSV 文件。当我这样做时,它会格式化包含数字的列,这使它们对我的目的毫无用处。据我所知,防止在导入时发生这种情况的唯一方法是重命名文件,使扩展名不是 .csv 并使用导入向导分别指定每列的格式。对于 50-60 列的文件,这是不切实际的。
由于互联网上这个经常被问到的问题的每个答案都暗示了在文件打开后将格式化数字转换回的某种方法(这对我不起作用 - 我想解决一般问题,而不是一些特定情况)或手动选择每列的格式类型(我不想这样做),我正在寻找一种设置全局首选项或样式的方法,以便打开的所有 CSV 文件的所有列始终格式化为文本。我也知道用引号“保护”数字,但我得到的文件不是那样的,我希望避免对文件进行预处理,这样 Excel 就不会把它们搞砸。
有没有办法专门做到这一点:始终将打开的 CSV 文件中的所有列格式化为文本,而无需在导入过程中每次手动选择每一列?
我使用的是 Excel 2003,但如果您知道的话,我会回答 2007 年的问题。
如果我输入一个 16 位数字(格式:数字,没有小数),它会改变我身上的数字。示例:1234567812345678 将视图更改为 1234567812345670。
如果我以通用格式输入它,它会更改上面的数字,因此它显示 1.23457E+15,但是如果您单击单元格,则显示屏再次将最后一位数字显示为 0 而不是 8。
我在另一台计算机上打开了该文件,现在遇到了同样的问题。我已经更改了自动更正和自动格式化都无济于事。帮助!
我有一个将数据导出到 CSV 文件的 Web 应用程序。这是有问题的 CSV 文件的一个示例行:
28,"65154",02/21/2013 00:00,"false","0316295","8316012,8315844","MALE"
Run Code Online (Sandbox Code Playgroud)
由于我无法发布图片,我将不得不在 Excel 中解释结果。“0316295”字段变成一个数字,前导 0 消失。“8316012,8315844”被解释为一个数字:83,160,128,315,844。最明显的是,这不是预期的结果。
我见过人们为这种情况推荐一个前导单引号,但这也不起作用。
28,"65154",02/21/2013 00:00,"false","'0316295","'8316012,8315844","MALE"
Run Code Online (Sandbox Code Playgroud)
单引号在 Excel 的单元格中始终可见,但如果我自己输入一个带前导单引号的数字,它只会显示预期的字符串,而不是带字符串的单引号。
导入似乎与打字不同。
有人在这里有解决方案吗?
我在Microsoft Excel 2010 中遇到了一个关于将字符串自动格式化为日期的问题,它似乎丢失了单元格的原始值。
1创建以下 CSV 文件:
username, points
phil, 1
october51, 5
Run Code Online (Sandbox Code Playgroud)
2在 Microsoft Excel 2010 中打开文件
注意:有一行带有 username october51。我希望 Excel 保留此值,而不是将其转换为其他值。
当我在文本编辑器(例如:gVim)中打开这个示例 CSV 文件时,我看到的正是我所期望的:

但是,当我在 Excel 中打开 CSV 文件时,它的格式october51为Oct-51.

我理解为什么 Excel 试图将字段格式化为更易读的格式,但我宁愿保留该值,october51因为它是某人的用户名。
请注意,首次打开文件时,Oct-51单元格的字段格式为Custom。所以,我尝试将格式更改为Text

这再好不过了。单元格的值是18902,而不是october51我所期望的。看起来 Excel 在打开文件后立即丢弃了单元格的原始值。
我已经尝试了所有可能的格式(例如:General、Text、Special、Custom),但没有一个输出 value october51。
真正的问题是保存文件时会保留这种单元格格式。如果我将此文件保存在 Excel 中并在文本编辑器中重新打开它,则用户名 …