为什么显示CSV数据时Excel删除前导零?


9

我有一个包含以下内容的CSV文本文件:

"Col1","Col2"
"01",A
"2",B
"10", C

当我使用Excel打开它时,它显示如下:

请注意,单元格A2尝试将“ 01”显示为没有前导“ 0”的数字。

当我将第2到4行的格式设置为“文本”时,它将显示更改为

...但开头的“ 0”仍然消失了。

有没有一种方法可以在Excel中打开CSV文件,并可以通过翻转某些选项来查看文件中的所有前导零?我不想不必在每个应该有前导零的单元格中重新输入'01。此外,使用前撇号需要在需要CSV时将更改保存为XLS格式。我的目标只是使用Excel以文本形式查看文件的实际内容,而无需Excel尝试对我进行任何格式设置。


我认为这一点的唯一方法是艰巨的,但似乎可行。复制并粘贴到新的工作表。将整个粘贴区域设置为“文本”格式,然后将其删除,然后再次粘贴值。鲍勃是你的阿姨。

3
(对于我们的非英国用户,“鲍勃是您的阿姨”是一个惯用语,可以轻松地翻译为“而且您已经准备好了”。)
iglvzx 2012年

罗伯特不是我的姨妈。:-)我以为以前做过,但是没有成功。尝试一下。令我感到困惑的是,为什么将单元格格式化为文本不会导致显示值“ 02”而左对齐的前导0。
乍得

1
如果CSV仅用于Excel,您可以用明确的数字作为文本-例如,如果你写'01在Excel中,它会显示01没有单引号..
Aprillion

Answers:


6

打开csv时,可以选择为每列指定定界符和数据类型。文本导入向导包含3个步骤。请注意,我的屏幕截图来自Excel 2010,但这在Excel 2003中的工作原理完全相同。

步骤1:选择定界(而不是固定宽度)

步骤2:选择逗号作为分隔符

步骤3:选择每一列,然后将数据格式更改为“文本”。(您将在每一列上方看到“文字”一词​​,如下面的屏幕截图所示。)

在此处输入图片说明

前导零将不再被删除:

在此处输入图片说明

更新:如果您不想在整个过程中导航以使Excel相互配合,则可以使用CSVEd,这是一种专门用于编辑带分隔符的文本文件的编辑器。像Notepad ++这样的优质文本编辑器也可能会起作用,但是您将无法看到按列排列的数据。



1
我的问题是我的文件具有csv扩展名,并且“导入”对话框永远不会出现。当我将文件重命名为具有文本扩展名时,我已经准备好并且知道要去哪里。ty。
乍得2012年

这很复杂:按您的描述导入后,我希望能够修改文件并将其另存为CSV。它给了我一个令人费解的丑陋对话框(请微软为它设计一个自定义对话框形式,而不是使用MessageBox Windows功能!)。我选择“以相同格式保留它”的选项。这样做时,它默认为制表符分隔的格式。为确保使用逗号分隔符保存txt文件,您必须将文件扩展名更改回“ csv”。这是丑陋的吗?在10个版本的Excel之后,我们有这个吗?
乍得

大家好,Velika,请看我答案底部的更新。完全不使用Excel可能会更好。
乔恩·克罗威尔

是的,我已经在寻找CSV编辑器。我看到了CSVEd。我最初的印象是它看起来像一个令人困惑的ametuerish界面。我认为“表格文本编辑器”看起来更好。谢谢你的帮助。
乍得

13

刚遇到这个问题。如果您控制CSV文件的创建,则可以使数据如下所示:

"Col1","Col2"
="01",A
="2",B
="10", C

当以Excel格式打开时,它将保留01。


即使您使用示例,我的Excel 2010也不保留01
OneWorld

1

格式化该列,以使其显示您想要的方式(例如00表示2位数字)
这具有将与这些数字一起保存的优点(但是您每次编辑CSV时都必须更改格式)


0

首先,为了安全起见,将实际excel工作表中的所有数据/列和行复制到另一个excel工作表中,以便您可以比较实际数据。脚步,

  1. 复制列中的所有值并将其粘贴到记事本中。
  2. 现在,将列类型更改为Excel工作表中的文本(它将修剪前面的/尾随的零),不必担心。
  3. 转到记事本并复制您刚才粘贴的所有值。
  4. 转到您的Excel工作表,然后将值粘贴到同一列中。

如果您有多个具有0个值的列,则重复相同的步骤。

快乐的时光。


0

1)将我的数字粘贴到excel列中(它将删除前导零)

2)然后右键单击以自定义“格式化单元格”,自定义为4位数字为0000,00000为5位数字。等等... (取回那些零)

3)复制列并将粘贴到.txt文件中。(应具有所有前导零)。

4)复制您的.txt列表。

5)右键单击excel中的任何列,并将其格式化为文本。

6)将从.txt复制的数据粘贴到excel列中(保留所有前导零)。

划出您内心的渴望。


0

如果损坏已经造成,并且您拥有Excel中的数据,则可以使用自定义数字格式选项更改文件格式。只需将零放入您想要的位置数(下图将显示六位数字)

在此处输入图片说明

这是Macro,也可以在整个工作表中执行。只需指定位数。

Sub whyNot()
Dim WS As Worksheet, fMat As String, p As Long

    '''''Custom Options
    Const NumberOfPlaces As Long = 3 '' change this to number of places you want
    Set WS = ActiveSheet 'or specify the sheet name with Sheets("Sheet1")


        For p = 1 To NumberOfPlaces
        fMat = fMat & "0"
        Next p

        WS.UsedRange.Cells.NumberFormat = fMat

End Sub
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.