Warum werden Excel-Zeilenumbrüche nicht in den Editor übertragen?

31

Wenn Sie eine Zelle mit Zeilenumbrüchen in Excel kopieren und in Notepad einfügen, wird der Text in eine Zeile eingefügt. Warum das?

Kyle Dixon
quelle
2
Hallo, willkommen beim Superuser! Versuchen Sie, so viele Details wie möglich anzugeben, damit Sie eine detailliertere Antwort auf Ihre Frage erhalten. Suchen Sie auf Ihrer eigenen Fragenseite nach nützlichen Tipps, um die besten Fragen zu stellen. Ich habe dies mit Excel 2013 und Notepad ++ getestet und es funktioniert einwandfrei, aber ich konnte das beschriebene Problem mit der normalen Notepad-Anwendung wiederholen, die mit dem Windows-Betriebssystem geliefert wird und nicht funktioniert.
Angelofdev
Beachten Sie, dass die Zwischenablage mehrere Varianten desselben Snippets unterstützen kann (Rohtext bis hin zu vielen Metadaten darüber, woher er stammt). Es liegt am empfangenden Programm zu bestimmen, welches es am besten mag. Notepad ist nicht sehr schlau.
Thorbjørn Ravn Andersen

Antworten:

27

Dies liegt an der Funktionsweise von Tabellenkalkulationen. Stellen Sie sich vor, Sie haben eine Tabelle voller Daten. Wenn Sie eine ganze Datenzeile kopieren und in Notepad einfügen möchten, müssen sich alle Daten in einer Zeile befinden. Wenn Sie eine andere Datenzeile kopieren und einfügen, muss sich die nächste Datenzeile in einer Zeile befinden. Wenn die erste kopierte Zeile Zeilenumbrüche enthält, befinden sich die Daten nicht mehr in zwei linearen Zeilen. Wenn Sie die Daten aus dem Editor in das Arbeitsblatt kopieren, werden sie nicht richtig eingefügt.

Keltari
quelle
6
Diese Antwort ist falsch. Versuchen Sie, Ihren Notizblock zu speichern, nachdem Sie den Text mit Zeilenumbruch eingefügt haben. Dann öffnen Sie die Datei stattdessen mit Wordpad. Nur ein Fehler in alten Versionen des Notizblocks . Sie sollten die andere Antwort als richtig markieren .
Zak
@Zak du bist falsch. So funktioniert das Einfügen aus Excel in einen einfachen Texteditor. Der Artikel, den Sie verlinkt haben, hat nichts mit einem Fehler zu tun, sondern befasst sich mit dem Hinzufügen von Unterstützung für Unix-Wagenrücklauf und Zeilenvorschübe durch Notepad.
Keltari
4
@Keltari Eigentlich nein, @Zak ist richtig. Aus irgendeinem Grund wird beim Hinzufügen eines Zeilenumbruchs in Excel (unter Verwendung von Alt+Enter) nur 0xA eingegeben, nicht das vollständige 0xD 0xA, dh LFstatt CR/LF. Excel interpretiert dies und zeigt den Zeilenumbruch an, wohingegen der normale Notizblock dies nicht tut, da dies erwartet wird CR/LF. Es ist ein Unterschied, ob Formate mehr als nur ein Fehler erkannt werden, aber das ist der richtige Grund.
ChatterOne
4
@Keltari Da gibt es nichts zu streiten. Verwenden Sie einen Binäreditor und sehen Sie, was in der Datei geschrieben ist.
ChatterOne
1
@Keltari Ehrlich gesagt sind diese positiven Stimmen meist die Folge der akzeptierten Antwort auf ein HNQ. Sie können sehen, wie viele Personen den anderen Antworten zustimmen.
Kapex
45

Dies ist der Fall, wenn Sie den Editor verwenden, den Microsoft-Standardtexteditor, der bereits in Windows vorinstalliert ist.

Sie können jedoch einen weiterentwickelten Texteditor wie PSPad oder Notepad ++ (beide ausgezeichnet und kostenlos) verwenden und Ihre Zeilenumbrüche übertragen.

Excel :

Excel

Zelle markiert, dann kopieren und in Notepad ++ einfügen :

Notepad ++

Derselbe Inhalt, der in Notepad eingefügt wurde (der Windows-Standardeditor):

WindowsNotpad

Beachten Sie, dass in beiden Fällen Anführungszeichen automatisch hinzugefügt wurden!

Die besseren Editoren bieten Ihnen auch die Möglichkeit, Steuerzeichen wie LineFeed (LF) und CarriageReturn (CR) anzuzeigen. In Notepad ++ sieht das so aus:

Notepad ++ withcontrochars

Fazit: Wählen Sie Ihr Werkzeug nach Ihren Bedürfnissen. Verwenden Sie den Editor, wenn die Zellgrenzen im Editor beibehalten werden sollen, der Zellinhalt jedoch möglicherweise ein wenig geändert wird. Verwenden Sie einen anderen Editor, wenn der Zellinhalt einschließlich Zeilenumbrüchen unberührt bleiben soll und die 1: 1-Reproduzierbarkeit der Zellgrenzen nicht entscheidend ist.

Massenverarbeitung solcher Daten

Wenn sowohl Zellränder als auch Zellinhalte 1: 1 gleichzeitig beibehalten werden müssen, können Probleme auftreten.

Es gibt vielleicht intelligentere Lösungen, aber in solchen Fällen habe ich ein kleines Programm in einer beliebigen Sprache (VBA, Python oder was auch immer Sie am liebsten mögen) geschrieben, das den Inhalt liest und Platzhalterzeichen für die Zeilenumbrüche hinzufügt (etwas so Einfaches wie "### Linebreak ###", das später durch CR- und LF-Steuerzeichen ersetzt werden kann. Das ist dann natürlich umständlich und nur dann sinnvoll, wenn Sie große Datenmengen verarbeiten müssen.

Möglicherweise treten auch Probleme mit den hinzugefügten Anführungszeichen auf. Diese können auf den ersten Blick nützlich sein, um Zellgrenzen zu erhalten, auch wenn Zeilenumbrüche enthalten sind. Möglicherweise enthält Ihre Zelle jedoch Anführungszeichen als Teil des ursprünglichen Inhalts, und es treten neue Probleme auf. Dafür gibt es verschiedene Lösungen, aber Sie müssen sich darum kümmern.

Christian Geiselmann
quelle
12
Notepad ++ zeigt CRLFes tatsächlich an, weil es das sieht LFund davon ausgeht, dass es ein volles sein soll CRLFund konvertiert es.
3D1T0R
@ 3D1T0R Ich vermute das liegt daran, dass ein Wagenrücklauf ohne Zeilenvorschub an der Lesbarkeit leiden würde. Es wäre jedoch wunderbar platzsparend.
Stian Yttervik
4
@ 3D1T0R: Dies hängt von der Einstellung für das Zeilenende in Notepad ++ ab. Es ist möglich, "Binär einfügen", um die ursprüngliche Excel-Formatierung beizubehalten, die in der Tat nur eine LF ist.
Thomas Weller
1
Dies sollte die akzeptierte Antwort sein
ChatterOne
1
Beachten Sie, dass Notepad unter Windows 10, Version 1809, die Option hat, LF als Zeilenumbruch zu verwenden (anstelle von CR-LF). Wenn Sie das verwenden, wird nicht konvertiert, aber die Zeilenumbrüche werden weiterhin korrekt angezeigt.
Erik A
34

Keltari ‚s Antwort gibt die logische Argumentation, während diese Antwort auf dem technischen Unterschied konzentriert.

Beim Rechnen werden drei verschiedene Formen von Zeilenumbrüchen verwendet:

  • Unix- und macOS 10.0+ -Zeilenenden verwenden ein Zeilenvorschubzeichen ( LF)
  • Macintosh-Zeilenenden (vor macOS 10.0) verwenden ein Wagenrücklaufzeichen ( CR)
  • Windows-Zeilenenden verwenden eine Kombination aus Wagenrücklauf- und Zeilenvorschubzeichen ( CRLF)

Dies ist ein Nachteil der Art und Weise, wie Schriftsteller arbeiten.

Excel verwendet eine Kombination dieser Zeilenumbrüche, um Zellen mit mehreren Zeilen darzustellen:

  • Zellen werden durch das TabZeichen getrennt.
  • Zeilen werden durch die CRLFZeichen getrennt.
  • Mehrzeilige Zellen trennen jede Zeile nur mit dem LFZeichen.

Dies wird deutlich, wenn Sie Ihre Arbeitsmappe als .txtDatei speichern und mit einem Texteditor öffnen, der das Anzeigen dieser Zeichen unterstützt.

Excel

Notepad ++

Notepad verarbeitet nur CRLFals Zeilenumbruch und ignoriert LFoder CRfür sich. Sie befinden sich noch im Dokument, sind jedoch in keiner Weise sichtbar.

Hinweis: Sie werden dies nicht sehen, wenn Sie vor und zurück einfügen, da Notepad ++ die Zeilenenden automatisch an Ihre Bedürfnisse anpasst, während dies mit dem normalen Notepad nicht möglich ist.

Worthwelle
quelle
3
Sie sollten auch erwähnen , dass die LF ist vorhanden eigentlich noch , wenn im Editor eingefügt, Notizblock einfach ist es nicht sichtbar angezeigt werden soll . (Dies entspricht im Grunde genommen einem Leerzeichen mit der Breite Null.) Daher werden beim Kopieren der eingefügten Daten aus dem Editor in Excel diese Zeilenumbrüche berücksichtigt (obwohl Excel die Zeilengröße nicht automatisch ändert).
3D1T0R
3
Beachten Sie, dass Excel auf diese Weise Arbeitsmappen nur in Textdateien exportiert. Bei XLSX-Dateien werden Zeilenumbrüche innerhalb einer Zeichenfolge durch dargestellt CRLF.
Kapex
3
Interessanterweise ist es durchaus möglich, eine Zelle zu konstruieren, die "wirklich" eine CRLF - enthält ="A"&CHAR(13)&CHAR(10)&"B". Von Formeln erzeugte Zeilenumbrüche sind in Excel nicht sichtbar, funktionieren jedoch einwandfrei, wenn sie kopiert und dann über "Werte einfügen" eingefügt werden. Ein Wert, der durch manuelles Eingeben "A<CRLF>B"in den Editor und Kopieren eingefügt wurde, behält auch die CRLF bei.
Random832
3
@ 3D1T0R ist richtig. Versuchen Sie, eine einzelne Excel-Zelle mit dem Text "a \ nb" (wobei "\ n" eine neue Zeile darstellt) in den Editor zu kopieren. Im Editor wird "ab" (mit den Anführungszeichen) angezeigt. Wenn Sie jedoch das Caret vor "a" stellen und dreimal die rechte Pfeiltaste auf Ihrer Tastatur drücken, werden Sie feststellen, dass sich zwischen "a" und "b" ein unsichtbares Zeichen mit der Breite Null befindet! Sie können es auch mit der Umschalttaste auswählen und in die Zwischenablage kopieren!
Andreas Rejbrand
2
@AndreasRejbrand: Ich habe diese Technik einige Male verwendet, um Textdateien mit LFEOLs schnell lesbar zu machen . Finden Sie also ein LFZeichen, wählen Sie es, Ctrl+ C, Ctrl+ Home, Ctrl+ F, Ctrl+ V, Enter, Esc, Enter. Dann wiederholt F3, Enterbis Ende. [Bearbeiten: <kbd> funktioniert nicht in Kommentaren?]
3D1T0R
1

Excel verwendet LF, um neue Zeilen innerhalb einer Zelle zu kennzeichnen. Notepad betrachtet dies nicht als eine neue Zeile, da Windows im Allgemeinen CRLF für neue Zeilen verwendet.

Notepad ++ ist intelligenter als das relativ einfache Notepad und interpretiert LF daher auch als eine neue Zeile.

Benjamin Goodacre
quelle
Ich benutze Notepad ++ nicht, aber aus Neugier: Was passiert, wenn Sie eine Excel-Tabelle haben, die aus mindestens zwei Zeilen besteht, die eine mehrzeilige Zelle enthalten, und diese in Notepad ++ kopieren und einfügen?
Andreas Rejbrand
1
@AndreasRejbrand Die mehrzeiligen Zellen werden umbrochen, "und Notepad ++ normalisiert alle Zeilenenden entsprechend. Sehen Sie hier . Wenn Sie stattdessen als speichern .txtund in Notepad ++ öffnen, haben die mehrzeiligen Zellen LFnur. Sehen Sie hier .
Worthwelle