Archiv der Kategorie: office

Sonderzeichen im UTF-8 CSV Export für Excel

Wer schon mal CSV Daten geschrieben hat kennt sicher das Problem, dass die Sonderzeichen meist nicht richtig angezeigt werden, wenn man in UTF-8 exportiert.

Wer das vermeiden will muss einfach den richtigen Unicode-Header mitsenden, dieser lautet:

echo pack("CCC",0xef,0xbb,0xbf);

Dieses Kommando sendet ihr am besten nach den „header“ Kommandos, aber noch vor den Daten, dann zeigt Excel auch die richtigen Daten per Doppelklick an.

P.S. LibreOffice / OpenOffice sind von Haus aus schlau genug und stellen die Daten ohnehin richtig dar, das Problem existiert also wirklich nur für Excel.

Windows Live und Thunderbird

Windows Live und Thunderbird, das hieß lange Zeit „entweder…oder“, aber nie „zusammen“. Bisher zumindest. Microsoft spendiert den Windows Live Mailkonten IMAP, einfach so, ohne „große“ Ankündigung, ohne viel Tamtam … fast hätte ich es überlesen.

Bisher unterstützte Microsoft bei den Windows Live Mailadressen nur EAS (Exchange Active Sync), was – zugegeben – wirklich schneller sein kann (und oft ist) wie das doch recht betagte IMAP. Andererseits ist EAS nicht sehr verbreitet. Zwar beherrscht jedes aktuelle Smartphone EAS mitlerweile (und mein altes Samsung Bada schon länger), schaut man sich allerdings die Desktop-Mail-Clients an sieht es oft Mau aus. Windows Live Mail ist da die erste Wahl, wenn man nicht Outlook (das richtige Outlook, nicht Express) selbst besitzt. Und lange war auch gezwungen, damit zu leben.

Nun funktioniert IMAP bei Windows Live Konten und ich zeige dir nun, wie du Thunderbird einstellt, damit die Mails syncronisiert werden und du auch an deine Termine in Thunderbird (mit Lightning) kommst.

Ich benutzte Thunderbird, du kannst, IMAP sei dank, auch irgendeinen Mailclient benutzen, der dir zusagt.

Windows Live in Thunderbird:

  1. Thunderbird installieren
  2. Lightning installieren (AddOn)
  3. Neues Konto anlegen
  4. Name, E-Mail-Adresse und Passwort solltest du ja kennen
  5. Nun NICHT die POP Variante blind übernehmen, sondern auf „manuell bearbeiten“ klicken (ganz unten als Button)
  6. Posteingang-Server auf IMAP wechseln
  7. Server-Adresse auf „imap-mail.outlook.com“ einstellen, Port 993, Sicherheit „SSL/TLS“, Auth „Passwort, normal“
  8. Postausgang-Server auf „smtp-mail.outlook.com“ einstellen, Port 587 (oder 25, wenn 587 geblockt ist), Sicherheit „STARTTLS“, Auth „Passwort, normal“
  9. Fertig

Für den Kalender machst du folgendes:

  1. In die Onlineversion deines Kalenders gehen
  2. In outlook.com einloggen
  3. oben links auf den Kalender wechseln
  4. Oben den Button „Teilen“ anklicken
  5. gewünschten Kalender wählen
  6. „Link abrufen“
  7. „Erstellen“
  8. Den Link bei „In andere Kalenderanwendungen importieren (ICS)“ kopieren
  9. In Thunderbird „Datei“ -> „Neu“ -> „Kalender“
  10. „Im Netzwerk“
  11. Bei „Adresse“ den Link reinkopieren -> „Weiter“
  12. Fertig

Viel Spaß mit Windows Live, IMAP und einem Mailclienten deiner Wahl.

 

Führungsnull in Excel aus CSV anzeigen

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.