zelleninterner Zeilenumbruch in Excel per PHP
Paul
- php
Moin,
habe viel geyahoot und trotzdem nichts vernünftiges gefunden.
Ich erstelle mir per fputcsv eine csv-Datei die ich in Excel öffne. Mein Problem: ich habe mehrere Spalten. In der letzten Spalte stehen mehrere Werte. Wie erreiche ich es programmiertechnisch, dass es nach jedem Wert einen zelleninternen Zeilenumbruch gibt (Alt+Enter)?
Mit chr(10), chr(13), \n, \r liefert mit Excel (2007) immer nur einen neue Zeile (mit Zeilennummer usw.).
a b c
__________
1 2 3
4
5 6 7
8
9
10 11 12
so will es haben (z.B. die 3 und 4 in einer Zelle).
Paul
Hi!
Wie erreiche ich es programmiertechnisch, dass es nach jedem Wert einen zelleninternen Zeilenumbruch gibt (Alt+Enter)?
Du könntest nachsehen, wie Excel selbst es macht. Neue Tabelle erstellen, zweizeiligen Wert eingeben, als CSV speichern, im Hexeditor öffnen.
Lo!
Moin!
a b c
__________
1 2 3
4
5 6 7
8
9
10 11 12
1. Ich glaube nicht, dass dies gut ist. Aber meistens erweisen sich Fragende in dieser Hinsicht als beratungsresistent und schimpfen noch, man möge GEFÄLLIGST deren Frage beantworten statt rumzuschleimen.
2. Die Daten werden in Quotas gekapselt, die beim Import in Excel angegeben werden.
3. Auch der Trenner ist konfigurierbar, dies betrifft das Zeilenendezeichen.
4. Die verwendeten Werte sind wohl für Excel der Standard.
5. Wenn Du Textzellen hast, dann denke auch an die fürs MS-Office passende Kodierung.
#Einstellungen:
$zeilentrenner="\r\n"; # Andere Variante: "\n"
$tupeltrenner=";"; # gängige andere Varianten: ",", "\t", " "
$quota='"';
# Daten: (Beispielarray)
$ar=array;
$ar[]=array("1", "2", "3".$zeilentrenner".4");
$ar[]=array("5", "6", "7".$zeilentrenner."8".$zeilentrenner."9");
$ar[]=array("10", "11", "12");
$arLines=array();
foreach ($ar as $item) {
if (1 < count ($item)) {
$arLines[]=$quota . implode($quota.$tupeltrenner.$quota, $item) . $quota;
} else {
$arLines[]=$quota . $item . $quota;
}
}
$csv=implode($zeilentrenner, $arLines);
#senden
header ("Content-Type: text/csv");
print $csv;
...
1. Ob Excel damit umgehen kann musst Du rausfinden.
2. Im normalen Leben würde ich auf die Variable $csv verzichten und gleich
print implode($zeilentrenner, $arLines); notieren.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix