Por que as quebras de linha do Excel não são transferidas para o Bloco de notas?

31

Ao copiar uma célula com quebras de linha no Excel e colá-la no Bloco de Notas, o texto é colado em uma linha. Por que é que?

Kyle Dixon
fonte
2
Olá bem-vindo ao superusuário! Tente fornecer o máximo de detalhes possível para obter uma resposta mais detalhada à sua pergunta. Vá até a página da sua própria pergunta para obter dicas úteis para ajudá-lo a fazer as melhores perguntas. Eu testei isso com o Excel 2013 e o Notepad ++ e isso funciona bem, mas consegui replicar o problema descrito com o aplicativo Notepad normal que acompanha o sistema operacional Windows e que não funciona.
181118 angelofdev
Observe que a área de transferência pode oferecer suporte a vários tipos do mesmo snippet (texto bruto até muitos metadados sobre a origem). Cabe ao programa receptor determinar qual é o que mais gosta. O bloco de notas não é muito inteligente.
Thorbjørn Ravn Andersen

Respostas:

27

Isso se deve à natureza de como as planilhas funcionam. Imagine que você tem uma planilha cheia de dados. Se você deseja copiar uma linha inteira de dados e colá-la no Bloco de Notas, todos esses dados precisam estar em uma linha. Isso ocorre porque se você copiar outra linha de dados e colá-la, a próxima linha de dados precisará estar em uma linha. Se houver quebras de linha na primeira linha que você copiou, os dados não estarão mais em duas linhas lineares. Se você copiar os dados do Bloco de Notas e voltar para a planilha, eles não serão colados corretamente.

Keltari
fonte
6
Esta resposta está errada. Tente salvar o seu bloco de notas depois de colar o texto com quebra de linha. Em seguida, abra o arquivo com o wordpad. Apenas um bug nas versões antigas do bloco de notas . Você deve marcar a outra resposta como correta.
Zak
@ Zak, você está incorreto. É assim que a colagem do Excel funciona em qualquer editor de texto simples. O artigo que você vinculou não tem nada a ver com um bug, mas é sobre o Bloco de Notas adicionar suporte para retorno de carro e feeds de linha do Unix.
Keltari
4
@ Keltari Na verdade não, @ Zak está correto. Por algum motivo, quando você adiciona uma quebra de linha no Excel (usando Alt+Enter), apenas 0xA é inserido, não o 0xD 0xA completo, o que significa LF, em vez de CR/LF. O Excel interpreta isso e mostra a quebra de linha, enquanto o bloco de notas simples não, porque espera CR/LF. É uma diferença nos formatos que estão sendo detectados mais que um bug, mas ainda assim, esse é o motivo correto.
ChatterOne
4
@ Keltari Não há nada a discutir. Use um editor binário e veja o que está escrito no arquivo.
ChatterOne
11
@ Keltari Honestamente, esses upvotes são principalmente o efeito de serem a resposta aceita em um HNQ. Você pode ver quantas outras pessoas concordam com as outras respostas.
Kapex
45

Isso ocorre quando você usa o Bloco de notas, que é o editor de texto básico da Microsoft que já está pré-instalado no Windows.

No entanto, você pode usar um editor de texto mais avançado, como PSPad ou Notepad ++ (excelente e gratuito), e transfere as quebras de linha.

Excel :

Excel

Célula marcada e copie e cole no Notepad ++ :

Notepad ++

O mesmo conteúdo colado no bloco de notas (o editor padrão do Windows):

WindowsNotpad

Observe que nos dois casos, as aspas foram adicionadas automaticamente!

Os melhores editores também oferecem a opção de exibir os caracteres de controle como LineFeed (LF) e CarriageReturn (CR). No Notepad ++, isso se parece com:

Notepad ++ withcontrochars

Como conclusão: escolha sua ferramenta dependendo de suas necessidades. Se você precisar de limites de célula preservados no editor, mas o conteúdo da célula poderá ser um pouco alterado, use o Bloco de Notas. Se você precisar do conteúdo da célula intocado, incluindo quebras de linha, e a reprodutibilidade 1: 1 dos limites da célula não é crucial, use outro editor.

Processamento em massa de tais dados

Se você precisar de bordas e conteúdo de células preservados 1: 1 ao mesmo tempo, poderá encontrar problemas.

Pode haver soluções mais inteligentes, mas o que eu fiz nesses casos foi escrever um pequeno programa em qualquer idioma (VBA, Python ou o que você mais gosta) que lê o conteúdo e adiciona cadeias de marcadores para as quebras de linha (algo tão simples quanto "### Quebra de linha ###", que pode ser substituída posteriormente pelos caracteres de controle CR e LF. Naturalmente, esse é um trabalho complicado e só faz sentido se você precisar processar grandes quantidades de dados.

Você também pode ter problemas com as aspas adicionadas. Estes podem, à primeira vista, ser úteis para preservar os limites das células, mesmo quando as quebras de linha são incluídas. No entanto, seu celular pode ter aspas como parte do conteúdo original e, em seguida, você recebe novos problemas. Existem várias soluções para isso, então, mas ele precisa de sua atenção.

Christian Geiselmann
fonte
12
O Notepad ++ mostrando que CRLFexiste, na verdade, porque ele vê LFe assume que deve estar cheio CRLFe o converte.
3D1T0R
@ 3D1T0R Suspeito que seja porque um retorno de carro sem avanço de linha sofreria na legibilidade. Seria delicioso espaço eficiente embora.
Stian Yttervik
4
@ 3D1T0R: depende da definição de final de linha do Notepad ++. É possível "colar binário" para manter a formatação original do Excel, que é de fato apenas uma LF.
Thomas Weller
11
Esta deve ser a resposta aceita
ChatterOne
11
Observe que o Bloco de notas no Windows 10 versão 1809 tem a opção de usar LF como quebra de linha (em vez de CR-LF). Se você usar isso, não há conversão, mas as quebras de linha ainda são exibidas corretamente.
Erik A
34

A resposta de Keltari fornece o raciocínio lógico, enquanto essa resposta se concentra na diferença técnica.

Existem três formas diferentes de quebra de linha em uso na computação:

  • As terminações de linha Unix e macOS 10.0+ usam um caractere de avanço de linha ( LF)
  • As terminações de linha do Macintosh (anteriores ao macOS 10.0) usam um caractere de retorno de carro ( CR)
  • As terminações de linha do Windows usam uma combinação de caracteres de retorno de carro e avanço de linha ( CRLF)

Este é um impedimento da maneira como os escritores de tipos funcionam.

O Excel usa uma combinação dessas quebras de linha para representar células com várias linhas:

  • As células são separadas pelo Tabcaractere.
  • As linhas são separadas pelos CRLFcaracteres.
  • As células multilinhas separam cada linha usando apenas o LFcaractere.

Isso fica evidente quando você salva sua pasta de trabalho como um .txtarquivo e a abre com um editor de texto que suporta a exibição desses caracteres.

Excel

Notepad ++

O bloco de notas processa apenas CRLFcomo novas linhas e ignora LFou CRpor si só. Eles ainda estão no documento, mas não são visíveis de forma alguma.

Nota: Você não verá isso ao colar para frente e para trás, porque o Notepad ++ ajusta automaticamente as terminações de linha para você, enquanto o bloco de notas normal não.

Worthwelle
fonte
3
Você também deve mencionar que o LF é , na verdade, ainda está presente quando colado no bloco de notas, bloco de notas simplesmente não exibi-lo visivelmente. (Torna efetivamente o mesmo que um espaço de largura zero.) Por isso, a cópia dos dados colados de volta do bloco de notas para o Excel inclui essas quebras de linha (embora o Excel não redimensione automaticamente as linhas para eles).
3D1T0R
3
Observe que é apenas assim que o Excel exporta pastas de trabalho para arquivos de texto. Para arquivos xlsx, as quebras de linhas em uma sequência são representadas por CRLF.
Kapex
3
Curiosamente, é inteiramente possível construir uma célula que "realmente" contenha um CRLF - ="A"&CHAR(13)&CHAR(10)&"B". Quebras de linha produzidas por fórmulas não são visíveis no Excel, mas funcionam bem se copiadas e coladas através de "colar valores". Um valor colado ao digitar manualmente "A<CRLF>B"no bloco de notas e copiar também manterá o CRLF.
Random832
3
@ 3D1T0R está certo. Tente copiar uma única célula do Excel com o texto "a \ nb" (onde "\ n" representa uma nova linha) no Bloco de Notas. Você verá "ab" no bloco de notas (entre aspas). Mas se você colocar o cursor na frente de "a" e pressionar a tecla Seta para a direita no teclado três vezes, verá que existe um caractere invisível de largura zero entre "a" e "b"! Na verdade, você também pode usar a tecla Shift para selecioná-lo e copiá-lo para a área de transferência!
Andreas Rejbrand
2
@AndreasRejbrand: Eu usei essa técnica várias vezes para tornar os arquivos de texto com LFEOLs legíveis rapidamente. ie Encontrar um LFpersonagem, selecione-a Ctrl+ C, Ctrl+ Home, Ctrl+ F, Ctrl+ V, Enter, Esc, Enter. Então repetidamente F3, Enteraté o fim. [Edit: <kbd> não funciona nos comentários?]
3D1T0R
1

O Excel usa LF para indicar novas linhas dentro de uma célula. O bloco de notas não considera que essa seja uma nova linha, pois o Windows geralmente usa o CRLF para novas linhas.

O Notepad ++ é mais inteligente que o relativamente simples Notepad e, portanto, interpreta o LF como uma nova linha.

Benjamin Goodacre
fonte
Eu não uso o Notepad ++, mas por curiosidade: o que acontece se você tiver uma tabela do Excel composta por pelo menos duas linhas contendo uma célula de múltiplas linhas e copiar e colar isso no Notepad ++?
Andreas Rejbrand
11
@AndreasRejbrand As células de múltiplas linhas serão agrupadas "e o Notepad ++ normalizará todas as terminações de linha correspondentes. Veja aqui . Se você salvar como .txte abrir no Notepad ++, as células multilinhas terão LFapenas. Veja aqui .
Worthwelle