如何阻止Excel自动格式化并使其像数字处理程序一样工作


20

我对csv文件中的Excel有一个真正的问题,其中它以某些方式格式化数字,而无论我做什么,我似乎都无法使Excel正确显示数据。

想象一下,我有一个名为“产品参考”的专栏。在该列中,我有许多类型的ID:

  • 001145
  • 55666
  • 02133

每当我打开Excel文件时,它会将这些数字格式化为:

  • 1145
  • 55666
  • 2133

这是完全错误的。当我突出显示该列并将其格式化为文本时,数字开头的前0不会返回。

为了解决这个问题,我什至先将csv文件设置为文本文件,然后将文件导入Excel,并明确要求不要通过在导入过程中将其设置为文本格式来格式化数字,但是在关闭时仍然格式化数字错误由于csv无法定义类型,因此Excel会自动将其另存为纯垃圾。

有没有人找到解决方法,可以帮助我?

谢谢,


据我所知,使Excel忠实呈现CSV的唯一方法是将其导入为文本,即您所描述的方式。
Excellll 2011年

不过,您不必将CSV设置为文本文件。从文本文件导入功能也适用于CSV文件。您只需要指定您有逗号分隔符即可。
Excellll 2011年

Answers:


20

您需要在csv文件中指定它是文本。为此,您可以将数字放在引号中,并在前面加上等号,例如:

="001145",="55666",="02133"

要做到这一点最简单的方法是做一个查找替换在,",=",用替换线的一端(您可能需要使用高级编辑器如记事本++本)"\r\n="和手动执行文件的开始和结束。


尼斯:)我给这是一个尝试和报告后面
Sammaye

11
  1. 将您遇到问题的文件的文件扩展名从“ .csv”更改为“ .txt”。
  2. 自己打开excel。不要单击该文件以将其打开。
  3. 单击“打开”,将文件类型从“所有Excel文件”查找为“所有文件”
  4. 找到您的文件,然后单击“打开”。由于Excel不会自动格式化txt,因此它将带您通过向导。
  5. 确保已选择“定界”单选按钮。点击“下一步”按钮。
  6. 选中“逗号”定界符框,然后继续单击 “下一步”按钮,直到看到(但不要单击)完成按钮。
  7. 滚动浏览电子表格中的每一列,突出显示要手动设置格式的每一列,然后将格式更改为“文本”。
  8. 单击完成按钮。

这是解决问题的一种好方法。
2015年

你救了我的一天!
dinesh ygv 2015年

2

从Oracle安装OpenOffice,并使用OpenOffice的CSV格式执行相同操作,并且可以正常工作。

我在带有Excel 2010的Windows 7 Pro中遇到了这个问题。我曾经能够将Outlook联系人复制到Excel,另存为CSV并导入到Gmail和Android(带有前导零和+号的移动号码)。


1

右键单击包含数据的单元格,然后单击“设置单元格格式...”菜单项。然后,在第一个标签(“数字”)中,将类别从“ 常规 ”更改为“ 文本”。这将防止Excel将这些单元格自动设置为数字格式,从而删除前导零(这在数值分析的上下文中没有意义,但在处理产品ID时非常有意义)。

如果要导入数据并将其解析为数字,则需要使用“数据导入”向导,并将每个列类型设置为“文本”,而不是“常规”。然后,对单元格执行相同的操作,然后保存Excel工作簿。


CSV文件不保留格式。这无济于事。
Excellll 2011年

@Excellll显然是一堆逗号分隔的ASCII字符。 默认情况下,Excel将单元格格式标记为“ 常规”,并尝试解释该值(数字,日期,任何内容),以便可以将其与公式一起使用(通常不能使用纯文本)。您需要手动告诉Excel将值解释为纯文本,以便它不会自动转换。
突破

如果Excel中没有啊会工作“自动保存”字段的格式:(我需要Excel以同样的方式作为任何其他CSV开瓶器/编程语言。
Sammaye

我已经尝试过了,当您打开转换后的Excel文件时,Excel会将其默认返回。因此,我从TXT导入到Excel,并告诉它在其中显示为文本,然后关闭文件并打开它,Excel默认将其隐藏的字段的真值恢复为数字格式,而我马上回到平方。
2011年

@突破,对不起,我没有表达我的意思。正如您在评论中所说,在Excel中打开CSV时,Excel将对所有数据应用常规格式。此时,Excel无法检索实际保存在CSV文件中的文本(即前导零)。关键是,一旦您在Excel中打开了CSV,现在就不能更改格式。
Excellll 2011年

1

单击要保留前导零的单元格,然后:右键单击>设置单元格格式>自定义> 0>键入所需的单元格总数,例如:如果我需要00001234,那么我将把00000000作为零的个数,告诉它要做的全部是在单元格中放入总数8,我已经有1234,所以它将用另外4个前导零来弥补差额。

我每天都用它来导入电子表格。


0

为了增加对此问题的@Jon答案,我有一个CSV文件,其中包含几列带有前导零和较长数字的列,在导入时会丢失前导零或将长整数转换为科学计数法,或将两者转换为科学计数法。

我可以解决的唯一方法是,首先Text使用以下步骤将空工作表中的所有单元格格式化为:

  1. 选择工作表中的所有单元格:

在此处输入图片说明

  1. 更改每个单元格的格式:

在此处输入图片说明

将所有工作表单元格格式设置为后Text,可以使用以下步骤导入CSV:

  1. Data标签中,点击From Text

在此处输入图片说明

  1. 选择您的.txt.csv文件,然后单击Import

  2. 选择Delimited并单击“下一步:

在此处输入图片说明

  1. 选择适当的定界符(我选择Comma),然后取消选择其他不适用的定界符,然后单击Next

在此处输入图片说明

  1. 滚动到右侧,找到需要格式化Text以保留前导零并防止科学计数形式的列。单击列(它应该变黑),然后Text在选项列表中选择。确保选择所有需要正确格式化的列:

在此处输入图片说明

  1. 然后点击Finish。如果滚动到格式化的列,则会看到所有前导零都保留了,而长字符串也不是科学计数法。

希望有帮助!


0

如果数据是使用SQL生成的。将制表符添加到需要防止截断的数字值上应该可以工作。

-- Oracle PL/SQL
select "01234567890123456" || chr(9) from dual;
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.