Ich muss eine Datei für Excel generieren. Einige der Werte in dieser Datei enthalten mehrere Zeilen.
Da dort auch nicht englischer Text enthalten ist, muss die Datei Unicode sein.
Die Datei, die ich jetzt generiere, sieht folgendermaßen aus: (in UTF8, mit nicht englischem Text gemischt und mit vielen Zeilen)
Header1,Header2,Header3
Value1,Value2,"Value3 Line1
Value3 Line2"
Beachten Sie, dass der mehrzeilige Wert in doppelte Anführungszeichen eingeschlossen ist und eine normale alltägliche neue Zeile enthält.
Nach dem, was ich im Web gefunden habe, sollte dies funktionieren, aber es gewinnt nicht, zumindest nicht Excel 2007- und UTF8-Dateien. Excel behandelt die 3. Zeile als zweite Datenzeile und nicht als zweite Zeile der ersten Datenzeile .
Dies muss auf den Computern meiner Kunden ausgeführt werden, und ich habe keine Kontrolle über deren Excel-Version. Daher benötige ich eine Lösung, die mit Excel 2000 und höher funktioniert.
Vielen Dank
BEARBEITEN: Ich habe mein Problem "gelöst", indem ich zwei CSV-Optionen hatte, eine für Excel (Unicode, Tabulator getrennt, keine Zeilenumbrüche in Feldern) und eine für den Rest der Welt (UTF8, Standard-CSV).
Nicht das, wonach ich gesucht habe, aber zumindest funktioniert es (bisher)
Antworten:
Sie sollten NUR Leerzeichen am Anfang von Feldern haben, in denen die Leerzeichen Teil der Daten sind. Excel entfernt keine führenden Leerzeichen. Sie erhalten unerwünschte Leerzeichen in Ihren Überschriften und Datenfeldern. Schlimmer noch, das
"
, was diesen Zeilenumbruch in der dritten Spalte "schützen" sollte, wird ignoriert, da es sich nicht am Anfang des Feldes befindet.Wenn die Datei Nicht-ASCII-Zeichen (in UTF-8 codiert) enthält, sollte
hex EF BB BF
am Anfang der Datei eine UTF-8-Stückliste (3 Byte ) vorhanden sein. Andernfalls interpretiert Excel die Daten gemäß der Standardcodierung Ihres Gebietsschemas (z. B. cp1252) anstelle von utf-8, und Ihre Nicht-ASCII-Zeichen werden in den Papierkorb verschoben.Die folgenden Kommentare gelten für Excel 2003, 2007 und 2013; nicht in Excel 2000 getestet
Wenn Sie die Datei durch Doppelklicken auf ihren Namen im Windows Explorer öffnen, funktioniert alles in Ordnung.
Wenn Sie es in Excel öffnen, variieren die Ergebnisse:
Zu den Optionen gehören:
quelle
EFBBBF
Kopfzeile, die0A
als Zeilentrennzeichen und0D0A
als neue Zeile in Zeichenfolgen in Textzellen verwendet wird.Nach vielen Optimierungen ist hier eine Konfiguration, die beim Generieren von Dateien unter Linux und Lesen unter Windows + Excel funktioniert, obwohl das eingebettete Zeilenumbruchformat nicht dem Standard entspricht :
In Perl habe ich Text :: CSV wie folgt verwendet:
quelle
\n
. DankeVor kurzem hatte ich ein ähnliches Problem. Ich habe es durch Importieren einer HTML- Datei gelöst. Das Basisbeispiel wäre wie folgt:
Ich weiß, es ist keine CSV und funktioniert möglicherweise für verschiedene Versionen von Excel unterschiedlich, aber ich denke, es ist einen Versuch wert.
Ich hoffe das hilft ;-)
quelle
Es ist anzumerken, dass Excel die CSV-Datei nicht ordnungsgemäß importiert, wenn in einer CSV-Datei Felder in doppelte Anführungszeichen gesetzt sind, die Zeilenumbrüche enthalten, wenn die CSV-Datei im UTF-8-Format geschrieben ist. Excel behandelt den Zeilenumbruch wie CR / LF und beginnt eine neue Zeile. Die Tabelle ist verstümmelt. Dies scheint auch dann der Fall zu sein, wenn Semikolons als Feldtrennzeichen (anstelle von Kommas) verwendet werden.
Das Problem kann behoben werden, indem Sie die CSV-Datei mit Windows Notepad bearbeiten, die Datei mit Datei> Speichern unter ... speichern und vor dem Speichern der Datei die Dateicodierung von UTF-8 in ANSI ändern. Sobald die Datei im ANSI-Format gespeichert ist, wird Microsoft Excel 2013 unter Windows 7 Professional die Datei ordnungsgemäß importieren.
quelle
Zeilenumbrüche in einem Wert scheinen zu funktionieren, wenn Sie anstelle von Komma oder Tabulator ein Semikolon als Trennzeichen verwenden und Anführungszeichen verwenden.
Dies funktioniert für mich sowohl in Excel 2010 als auch in Excel 2000. Überraschenderweise funktioniert es jedoch nur, wenn Sie die Datei als neue Tabelle öffnen, nicht, wenn Sie sie mithilfe der Datenimportfunktion in eine vorhandene Tabelle importieren.
quelle
Auf einem PC möchten Sie mit dem ASCII-Zeichen Nr. 10 eine neue Zeile in einen Wert einfügen.
Sobald Sie es in Excel erhalten haben, müssen Sie jedoch sicherstellen, dass der Zeilenumbruch für die mehrzeiligen Zellen aktiviert ist. Andernfalls wird die neue Zeile als quadratisches Feld angezeigt.
quelle
Dies funktioniert nicht, wenn Sie versuchen, die Datei in EXCEL zu importieren.
Verknüpfen Sie die Dateierweiterung csv mit EXCEL.EXE, damit Sie EXCEL durch Doppelklicken auf die csv-Datei aufrufen können.
Hier platziere ich Text gefolgt von NewLine Char, gefolgt von etwas mehr Text UND füge die gesamte Zeichenfolge in doppelte Anführungszeichen ein.
Verwenden Sie keine CR, da EXCEL einen Teil der Zeichenfolge in der nächsten Zelle platziert.
Wenn Sie EXCEL aufrufen, wird dies angezeigt. Möglicherweise müssen Sie die Höhe automatisch anpassen, um alles zu sehen. Wo die Zeilenumbrüche stattfinden, hängt von der Breite der Zelle ab.
2
DATUM
Hier ist der Code in Basic
quelle
Ich habe das gefunden und es hat bei mir funktioniert
Dann, wo Sie Sachen haben müssen
..... .....
Wenn Sie dann etwas ausschreiben müssen - wie HTML, das Folgendes enthält: "Sie können dies tun."
Neue Zeilen enden mit
. PHP_EOL
Am Ende des Skripts wird ein Link ausgedruckt, damit der Benutzer die Datei herunterladen kann.
quelle
UTF-Dateien, die eine Stückliste enthalten, bewirken, dass Excel neue Zeilen buchstäblich behandelt, selbst wenn dieses Feld in Anführungszeichen gesetzt ist. (Getesteter Excel 2008 Mac)
Die Lösung besteht darin, neue Zeilen nicht als Zeilenvorschub, sondern als Wagenrücklauf (CHR 13) zu verwenden.
quelle
Testen Sie dies: Es funktioniert vollständig für mich: Fügen Sie die folgenden Zeilen in eine
xxxx.csv
Datei einÖffnen Sie mit Excel.
In einigen Fällen wird es direkt geöffnet, andernfalls muss die Konvertierung von Spalten in Daten verwendet werden. Erweitern Sie die Spaltenbreite und klicken Sie auf die Schaltfläche Text umbrechen. oder formatieren Sie Zellen und aktivieren Sie den Zeilenumbruch.
und danke für die anderen Vorschläge, aber sie haben bei mir nicht funktioniert. Ich bin in einer reinen Windows-Umgebung und wollte nicht mit Unicode oder anderen lustigen Dingen spielen.
Auf diese Weise setzen Sie eine Formel von csv auf Excel. Es kann viele Verwendungszwecke für diese Arbeitsmethode geben. (Beachten Sie das = vor den Anführungszeichen)
pd: Bitte geben Sie in Ihren Vorschlägen einige Beispiele der Daten an, nicht nur den Code.
quelle
Das Setzen von "\ r" am Ende jeder Zeile hatte tatsächlich den Effekt von Zeilenumbrüchen in Excel, aber in der CSV verschwand es und hinterließ ein hässliches Durcheinander, bei dem jede Zeile ohne Leerzeichen und ohne Zeilenumbrüche gegen die nächste gequetscht wurde
quelle
Die Art und Weise, wie wir dies tun (wir verwenden VB.Net), besteht darin, den Text in Chr (34) mit neuen Zeilen einzuschließen. Dies ist das Zeichen, das die doppelten Anführungszeichen darstellt, und ersetzt alle CR-LF-Zeichen für LF.
quelle
Normalerweise lautet eine neue Zeile "\ r \ n". In meiner CSV habe ich "\ r" durch einen leeren Wert ersetzt. Hier ist Code in Javascript:
Wenn ich die CSV in MS Excel öffne, hat es gut funktioniert. Wenn ein Wert mehrere Zeilen enthält, bleibt er in einer einzelnen Zelle in der Excel-Tabelle.
quelle
Nur für Datei öffnen lautet die Syntax
Entscheidend ist, dass nach dem ersten "," kein Leerzeichen mehr vorhanden ist . Normalerweise sind Leerzeichen in Ordnung und werden abgeschnitten, wenn die Zeichenfolge nicht in Anführungszeichen steht. Aber sonst böse. Ich habe eine Weile gebraucht, um das herauszufinden.
Es scheint keine Rolle zu spielen, ob die Zeile beendet ist \ n oder \ c \ n.
Stellen Sie sicher, dass Sie die Formelleiste erweitern, damit Sie den Text in der Zelle tatsächlich sehen können (habe mich nach einem langen Tag erwischt ...)
Jetzt wird File Open UTF-8 natürlich nicht richtig unterstützen (es sei denn, man verwendet Tricks).
Excel> Daten> Externe Daten abrufen > Aus Text
Kann in den UTF-8- Modus versetzt werden (ganz unten in der Liste der Schriftarten). In diesem Fall scheinen die neuen Zeilen jedoch nicht zu funktionieren, und ich kenne keine Möglichkeit, dies zu beheben.
(Man könnte sagen, dass MS nach 30 Jahren dieses Zeug richtig machen würde.)
quelle
In Excel 365 beim Importieren der Datei:
Daten -> Aus Text / CSV -> Datei auswählen> Daten transformieren -> Datenquellenkonfiguration -> Datenquelle auswählen -> Klicken Sie auf Quelle bearbeiten -> Wählen Sie in der Dropdown-Liste Zeilenumbruch Zeilenumbrüche in Anführungszeichen ignorieren.
Der obige Text wurde aus dem Portugiesischen übersetzt, sodass der Wortlaut im Englischen möglicherweise anders ist.
quelle
Sie können den nächsten tun
"\"Value3 Line1 Value3 Line2\""
. Es funktioniert für mich, eine CSV-Datei in Java zu generierenquelle
Hier ist ein interessanter Ansatz mit JavaScript ...
quelle
Das Drucken einer HTML-Newline
<br/>
in den Inhalt und das Öffnen in Excel funktioniert in jedem Excel einwandfreiquelle
Sie können die Tastenkombination ALT + Eingabetaste verwenden.
quelle