Viele kennen das Problem. Man hat eine CSV Datei, in dieser steht eine Postleitzahl oder eine Telefonnummer, die als erste Stelle eine 0 (Null) hat.
Öffnet man das nun in Excel, ist die Null weg.
Beispiel: Ein Kunde kommt aus Dresden, gibt als PLZ “01307” ein. Exportiert man das ganze dann als “kunden.csv” und doppelklickt es in Excel auf, so erscheint “1307”, was ja nicht ganz richtig ist. Excel ist einfach zu schlau…
Da wir aber klein, trotzig und unwürdig sind, möchten wir trotzdem die führende Null sehen; der Kunde übrigens auch. Da der Kunde König und Excel eh nur eingekauft ist, ist der Weg klar: Die Null muss her!
Wer lange sucht, der findet auch die tollsten Lösungswege. Nicht Excel muss sich an uns, vielmehr müssen wir uns an Excel anpassen; sprich: Nicht einfach per doppelklick öffnen, o nein, gefälligst per Import die Daten einholen und dann als Text formatieren.
Das kann es nicht sein, hier also der Weg des Programmierers!
Unser Vorteil ist, das Excel die Daten pro Spalte nicht nur importiert, sondern auch interpretiert, d.h. wir benutzen eine Funktion aus Excel, die dafür sorgt, dass die Daten korrekt dargestellt werden.
Diese heißt für unseren Zweck: VERKETTEN
Will man also diese Zeile richtig importieren:
“Max”;”01307”;”Dresden”
Dann muss man sowas schreiben:
“Max”;”=VERKETTEN(0;1;3;0;7)”;”Dresden”
Und da Programmierer erwiesenermaßen faul sind, werfe ich gleich mal eine PHP-Funktion dafür in die Runde. Die kann sicherlich noch optimiert werden, aber für’s erste genügt diese den Anforderungen:
function formatForExcel($text)
{
$excelText = '=VERKETTEN(';
for($i=0; $i<strlen($text);$i++)
{
if ($i>0) {
$excelText .= ';';
}
$excelText .= $text[$i];
}
$excelText .= ')';
return $excelText;
}
Wird nun formatForExcel aufgerufen, dann werden die Daten entsprechend per “Verketten” abgelegt und dann in Excel richtig aufgerufen.