Perché le interruzioni di riga di Excel non vengono trasferite in Blocco note?


31

Quando si copia una cella con interruzioni di riga in Excel e si incolla in Blocco note, il testo viene incollato su una riga. Perché?


2
Ciao benvenuto al superutente! Prova a fornire quanti più dettagli possibile in modo da ottenere una risposta più dettagliata alla tua domanda. Vai a fare la tua pagina di domande per suggerimenti utili per aiutarti a porre le domande migliori. Ho provato questo con Excel 2013 e Notepad ++ e funziona perfettamente, ma sono stato in grado di replicare il problema descritto con la normale applicazione Notepad fornita con il sistema operativo Windows e che non funziona.
angelofdev,

Si noti che gli Appunti possono supportare più versioni dello stesso frammento (testo non elaborato fino a molti metadati su da dove proviene). Spetta al programma di ricezione determinare quale gli piace di più. Blocco note non è molto intelligente.
Thorbjørn Ravn Andersen,

Risposte:


27

È dovuto alla natura di come funzionano i fogli di calcolo. Immagina di avere un foglio di calcolo pieno di dati. Se dovessi copiare un'intera riga di dati, quindi incollarli in Blocco note, tutti questi dati devono trovarsi su una riga. Questo perché se dovessi copiare un'altra riga di dati e incollarli, la riga successiva di dati deve trovarsi su una riga. Se ci fossero interruzioni di riga nella prima riga copiata, i dati non sarebbero più in due righe lineari. Se dovessi copiare i dati da Blocco note e reinserirli nel foglio di calcolo, non verranno incollati correttamente.


6
Questa risposta è sbagliata Prova a salvare il blocco note dopo aver incollato il testo con un'interruzione di riga. Quindi apri invece il file con wordpad. Solo un bug nelle vecchie versioni di Blocco note . Dovresti contrassegnare l' altra risposta come corretta.
Zak,

@Zak non sei corretto. Ecco come incollare Excel funziona in qualsiasi editor di testo semplice. L'articolo che hai collegato non ha nulla a che fare con un bug, ma riguarda il Blocco note che aggiunge il supporto per il ritorno a capo di Unix e i feed di riga.
Keltari,

4
@Keltari In realtà no, @Zak è corretto. Per qualche motivo quando aggiungi un'interruzione di riga in Excel (usando Alt+Enter), viene inserito solo 0xA, non l'intero 0xD 0xA, che significa LFinvece di CR/LF. Excel lo interpreta e mostra l'interruzione di riga, mentre il semplice blocco note non lo fa, perché si aspetta CR/LF. È una differenza nei formati che viene rilevata più di un bug, ma è comunque questa la ragione corretta.
ChatterOne

4
@Keltari Non c'è nulla da discutere. Usa un editor binario e vedi cosa c'è scritto nel file.
ChatterOne

1
@Keltari Onestamente questi voti sono principalmente l'effetto di essere la risposta accettata su un HNQ. Puoi vedere quante altre persone sono d'accordo con le altre risposte.
Kapex,

45

Questo è vero quando si utilizza Blocco note, che è l'editor di testo di base di Microsoft che è già preinstallato in Windows.

Tuttavia, puoi utilizzare un editor di testo più avanzato come PSPad o Notepad ++ (sia eccellente che gratuito) e puoi trasferire le interruzioni di riga.

Excel :

Eccellere

Cella contrassegnata, quindi copia e incolla in Notepad ++ :

Notepad ++

Stesso contenuto incollato nel Blocco note (l'editor predefinito di Windows):

WindowsNotpad

Si noti che in entrambi i casi, le virgolette sono state aggiunte automaticamente!

I migliori editor ti danno anche la possibilità di visualizzare i caratteri di controllo come LineFeed (LF) e CarriageReturn (CR). In Notepad ++ sembra che:

Notepad ++ withcontrochars

In conclusione: scegli il tuo strumento in base alle tue esigenze. Se hai bisogno di conservare i limiti delle celle nell'editor, ma il contenuto delle celle può essere leggermente modificato, usa Blocco note. Se hai bisogno che i contenuti delle celle non vengano toccati, comprese le interruzioni di riga, e la riproducibilità 1: 1 dei limiti delle celle non sia cruciale, usa un altro editor.

Elaborazione di massa di tali dati

Se è necessario conservare contemporaneamente i bordi delle celle e il contenuto delle celle 1: 1, è possibile che si verifichino problemi.

Potrebbero esserci soluzioni più intelligenti, ma ciò che ho fatto in questi casi è stato scrivere un piccolo programma in qualsiasi lingua (VBA, Python o qualunque cosa ti piaccia di più) che legge i contenuti e aggiunge stringhe segnaposto per le interruzioni di riga (qualcosa di semplice come "### Linebreak ###", che può essere successivamente sostituito da caratteri di controllo CR e LF. Naturalmente, questo funziona in modo complicato e ha senso solo se devi elaborare grandi quantità di dati.

È possibile che si verifichino problemi anche con le virgolette aggiunte. A prima vista, questi possono essere utili per preservare i confini delle celle anche quando sono incluse le interruzioni di riga. Tuttavia, la cella potrebbe contenere virgolette una parte del contenuto originale e quindi si verificano nuovi problemi. Ci sono varie soluzioni a questo, quindi, ma ha bisogno della tua attenzione.


12
Notepad ++ mostra CRLFche in realtà c'è perché vede LFe presuppone che dovrebbe essere un pieno CRLFe lo converte.
3D1T0R

@ 3D1T0R Sospetto che ciò sia dovuto al fatto che un ritorno a capo senza avanzamento riga ne risentirebbe nella leggibilità. Sarebbe comunque deliziosamente efficiente in termini di spazio.
Stian Yttervik il

4
@ 3D1T0R: dipende dall'impostazione di fine riga Notepad ++. È possibile "incollare binario" per mantenere la formattazione originale di Excel, che in effetti è solo un LF.
Thomas Weller,

1
Questa dovrebbe essere la risposta accettata
ChatterOne

1
Notare che Blocco note in Windows 10 versione 1809 ha l'opzione di usare LF come interruzione di riga (anziché CR-LF). Se lo usi, non c'è conversione ma le interruzioni di riga vengono comunque visualizzate correttamente.
Erik A

34

La risposta di Keltari fornisce il ragionamento logico, mentre questa risposta si concentra sulla differenza tecnica.

Esistono tre diverse forme di interruzioni di riga in uso nell'informatica:

  • Le terminazioni di riga Unix e macOS 10.0+ utilizzano un carattere di avanzamento riga ( LF)
  • Le terminazioni di riga Macintosh (precedenti a macOS 10.0) utilizzano un carattere di ritorno a capo ( CR)
  • Le terminazioni di riga di Windows utilizzano una combinazione di caratteri di ritorno a capo e di avanzamento riga ( CRLF)

Questo è un ostacolo al modo in cui funzionano gli scrittori di tipi.

Excel utilizza una combinazione di queste interruzioni di riga per rappresentare celle con più righe:

  • Le celle sono separate dal Tabcarattere.
  • Le righe sono separate dai CRLFpersonaggi.
  • Le celle multilinea separano ogni riga usando solo il LFcarattere.

Ciò diventa evidente quando si salva la cartella di lavoro come .txtfile e la si apre con un editor di testo che supporta la visualizzazione di questi caratteri.

Eccellere

Notepad ++

Blocco note viene elaborato solo CRLFcome newline e ignora LFo CRda solo. Sono ancora nel documento, ma non sono visibili in alcun modo.

Nota: questo non viene visualizzato quando si incolla avanti e indietro, poiché Notepad ++ regola automaticamente le terminazioni di linea, mentre il normale Blocco note no.


3
Dovresti anche menzionare che in realtà LF è ancora presente quando incollato nel blocco note, il blocco note semplicemente non lo visualizza visibilmente. (Rende effettivamente uguale a uno spazio di larghezza zero.) Pertanto, la copia dei dati incollati dal blocco note in Excel include queste interruzioni di riga (anche se Excel non ridimensiona automaticamente le righe su di esse).
3D1T0R

3
Si noti che questo è solo il modo in cui Excel esporta le cartelle di lavoro in file di testo. Per i file xlsx, le interruzioni di riga all'interno di una stringa sono effettivamente rappresentate da CRLF.
Kapex,

3
È interessante notare che è del tutto possibile costruire una cella che "realmente" contiene un CRLF - ="A"&CHAR(13)&CHAR(10)&"B". Le interruzioni di riga prodotte dalle formule non sono visibili in Excel, ma funzionano bene se copiate e incollate tramite "valori incolla". Un valore incollato dalla digitazione manuale "A<CRLF>B"del blocco note e dalla copia manterrà anche il CRLF.
Casuale 832

3
@ 3D1T0R ha ragione. Prova a copiare una singola cella di Excel con il testo "a \ nb" (dove "\ n" rappresenta una nuova riga) nel Blocco note. Vedrai "ab" nel Blocco note (con le virgolette). Ma se metti il ​​cursore davanti a "a" e premi il tasto freccia destra sulla tastiera tre volte, scoprirai che c'è un carattere invisibile di larghezza zero tra "a" e "b"! Infatti, puoi anche usare il tasto Maiusc per selezionarlo e copiarlo negli appunti!
Andreas Rejbrand,

2
@AndreasRejbrand: ho usato questa tecnica diverse volte per rendere LFrapidamente leggibili file di testo con EOL. cioè Trova un LFcarattere, selezionarlo, Ctrl+ C, Ctrl+ Home, Ctrl+ F, Ctrl+ V, Enter, Esc, Enter. Quindi più volte F3, Enterfino alla fine. [Modifica: <kbd> non funziona nei commenti?]
3D1T0R

1

Excel utilizza LF per indicare nuove linee all'interno di una cella. Blocco note non considera questa una nuova riga poiché Windows in generale utilizza CRLF per le nuove righe.

Notepad ++ è più intelligente del relativamente semplice Notepad e interpreta quindi anche LF come una nuova linea.


Non uso Notepad ++, ma per curiosità: cosa succede se hai una tabella Excel composta da almeno due righe contenenti una cella multilinea e copia e incolla quella in Notepad ++?
Andreas Rejbrand,

1
@AndreasRejbrand Le celle multilinea verranno racchiuse "e Notepad ++ normalizzerà tutte le terminazioni di linea in modo che corrispondano. Vedi qui . Se invece salvi come .txte apri in Notepad ++, le celle multilinea avranno LFsolo. Vedi qui .
Worthwelle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.