Por que o Excel está removendo zeros à esquerda ao exibir dados CSV?


9

Eu tenho um arquivo de texto CSV com o seguinte conteúdo:

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

Quando eu o abro com o Excel, ele é exibido como mostrado aqui:

Observe que o Cell A2tenta exibir "01" como um número sem um "0" inicial.

Quando formato as linhas 2 a 4 como "Texto", ele altera a exibição para

... mas ainda assim o "0" principal se foi.

Existe uma maneira de abrir um arquivo CSV no Excel e poder ver todos os zeros à esquerda no arquivo, ativando alguma opção? Não quero redigitar '01 em todas as células que devem ter um zero inicial. Além disso, o uso de um apóstrofo inicial exige que as alterações sejam salvas no formato XLS quando o CSV for desejado. Meu objetivo é simplesmente usar o Excel para visualizar o conteúdo real do arquivo como texto sem que o Excel tente me dar algum favor de formatação.


A única maneira de descobrir isso é árdua, mas parece funcionar. Copie e cole em uma nova planilha. Defina toda a área colada para o formato "texto", exclua-a e cole os valores novamente. Bob é sua tia.

3
(Para os nossos usuários fora do Reino Unido, "de Bob sua titia" é uma expressão que se traduz frouxamente "e está tudo pronto".)
iglvzx

Robert não era minha tia. :-) Eu pensei que tinha conseguido fazer isso antes, mas não funcionou. Tente. O que me confundiu é por que formatar a célula como texto não resulta no valor "02" sendo exibido com um 0 à esquerda justificado.
Chad #

11
se o CSV é apenas para Excel, você pode usar números explícitos como texto - por exemplo, se você escrever '01em excel, ele irá exibir 01sem a aspa simples ..
Aprillion

Respostas:


6

Ao abrir o csv, você terá a opção de especificar o delimitador e o tipo de dados para cada coluna. O assistente de importação de texto possui 3 etapas. Observe que minhas capturas de tela são do Excel 2010, mas isso funcionará exatamente da mesma maneira no Excel 2003.

Etapa 1: selecione delimitado (em vez de largura fixa)

Etapa 2: selecione vírgula como seu delimitador

Etapa 3: selecione cada coluna e altere o formato dos dados para "texto". (Você verá a palavra Texto exibida acima de cada coluna, como na captura de tela abaixo.)

insira a descrição da imagem aqui

Os zeros à esquerda não serão mais removidos:

insira a descrição da imagem aqui

ATUALIZAÇÃO : se você não quiser navegar pelo processo para obter a cooperação do Excel, use o CSVEd , um editor projetado especificamente para editar arquivos de texto delimitados. Um bom editor de texto como o Notepad ++ também pode funcionar, mas você não poderá ver seus dados organizados em colunas.



11
Meu problema foi que meu arquivo tinha uma extensão csv e a caixa de diálogo Importar nunca aparece. quando renomeei o arquivo para ter uma extensão de texto, estava tudo pronto e sabia para onde ir. ty.
Chad

Aqui está uma complicação: Depois de importá-lo como você descreve, desejo a capacidade de modificar o arquivo e salvá-lo como CSV. Ele me apresenta uma caixa de diálogo complicada e feia (vamos projetar pela Microsoft um formulário de caixa de diálogo personalizado para isso, em vez de usar o recurso Windows do MessageBox!). Eu escolhi a opção de "mantê-lo no mesmo formato". Quando faço isso, o padrão é um formato separado por tabulação. Para garantir que o arquivo txt seja salvo com um separador de vírgulas, é necessário alterar a extensão do nome do arquivo novamente para "csv". Isso é feio de quê? Após 10 versões do Excel, temos isso?
Chad

Oi Velika, veja a atualização na parte inferior da minha resposta. Talvez seja melhor não usar o Excel.
precisa

Sim, eu já estava procurando por um editor de CSV. Eu vi CSVEd. Minha impressão inicial é que parece uma interface confusa e ametista. Eu acho que o "Tabular Text Editor" parece melhor. Obrigado pela ajuda.
Chad

13

Acabei de encontrar este problema. Se você controlar a criação do arquivo CSV, poderá fazer com que os dados se pareçam com o seguinte:

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

Quando aberto como Excel, preservará o 01.


O meu Excel 2010 não preserva 01 mesmo com o seu exemplo
OneWorld

1

formate a coluna para exibir como você deseja (por exemplo, 00 para 2 dígitos)
Isso tem a vantagem de ser salva com esses dígitos (mas você precisará alterar a formatação sempre que editar o CSV)


0

Primeiro, copie todos os dados / colunas e linhas da planilha do Excel real para outra planilha do Excel, apenas para garantir o lado seguro, para que você tenha os dados reais com os quais comparar. Passos,

  1. Copie todos os valores na coluna e cole-os em um bloco de notas.
  2. Agora altere o tipo de coluna para texto na planilha do Excel (ele cortará os zeros anteriores / finais), não se preocupe.
  3. Vá para o Bloco de notas e copie todos os valores que você colou agora.
  4. Vá para a planilha do Excel e cole os valores na mesma coluna.

Se você tiver mais de uma coluna com valores 0, basta repetir o mesmo.

Dias felizes.


0

1) Cole meus números em uma coluna do Excel (ele removerá zeros à esquerda)

2) Clique com o botão direito do mouse em "formatar células" personalizado para 0000 para um número de 4 dígitos, 00000 para um número de 5 dígitos. etc ... (traga de volta esses zeros)

3) Copie a coluna e cole -a em um arquivo .txt. (deve ter todos os zeros à esquerda).

4) Copie sua lista .txt.

5) Clique com o botão direito do mouse em qualquer coluna do Excel e formate-a em texto.

6) Cole os dados copiados do arquivo .txt na coluna do Excel (todos os zeros à esquerda permanecem)

Delimite o desejo do seu coração.


0

Se o dano já estiver feito e você tiver os dados no Excel, poderá alterar o formato do arquivo usando a opção Formato de número personalizado. Basta colocar zeros no número de lugares que você deseja (a imagem abaixo fará seis dígitos)

insira a descrição da imagem aqui

Aqui está a macro que também faria em toda a planilha. Basta especificar o número de dígitos.

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.