Tom: EXCEL: Webabfrage durchführen

Hello,

ich bekomme es leider nicht hin, dass Excel die Daten aus dem Web sauber auf Zellen verteilt.

Abfrage:
http://www.bitworks.de/statistic/get_mail_statistic.php

Zur Zeit einfach nurt realisiert durch:

<?php   ### get_mail_statistic.php ###

header('ContentType: application/octet-stream;\r\n  name="mailstatistik.csv"');

readfile('/var/log/mailstatistic.log');

?>

Welchen Content-Type und welche zusätzlichen Header muss ich nehemn, dass Excel (2000) den Inhalt der response an den Semicolen sauber in Spalten trennt und die Zellen vernünftig füllt?

Es wird immer alles in _eine_ Zelle geknallt, was ich natürlich nicht will.

Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  1. Hello,

    Abfrage:
    http://www.bitworks.de/statistic/get_mail_statistic.php

    Zur Zeit einfach nurt realisiert durch:

    <?php   ### get_mail_statistic.php ###

    header('Content-Type: application/octet-stream;\r\n  name="mailstatistik.csv"');

    readfile('/var/log/mailstatistic.log');

    ?>

    Welchen Content-Type und welche zusätzlichen Header muss ich nehemn, dass Excel (2000) den Inhalt der response an den Semicolen sauber in Spalten trennt und die Zellen vernünftig füllt?

    Es wird immer alles in _eine_ Zelle geknallt, was ich natürlich nicht will.

    Ich dachter schon: kleiner Fehler, große Wirkung, aber das war's leider nicht.

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    1. Hallo,

      auf http://www.webmaster-toolkit.com/mime-types.shtml findest du ein paar Mime-Types für application/excel, welche du benützen könntest. Grundsätzlich könntest du mit diesen Mime-Types weiter recherchieren, z.b. in der MSDN aber ... Probieren geht bekanntlich über studieren. :)

      Ciao, Frank

      1. Hello FrankX, Hallo Frank (no reg),

        auf http://www.webmaster-toolkit.com/mime-types.shtml findest du ein paar Mime-Types für application/excel, welche du benützen könntest. Grundsätzlich könntest du mit diesen Mime-Types weiter

        recherchieren, z.b. in der MSDN aber ...

        Danke, ich werde fleißig lesen.

        Probieren geht bekanntlich über studieren. :)

        Das befürchte ich  auch.

        Nach Möglichkeit wollte ich ohne ein Macro oder einen VBA-Code auskommen.

        Da auch andere Applikationen mit den bereitgestelltten Daten zurecht kommen sollen, muss es auch beim Semikolon bleiben. GGf. kann ich noch ein Double-Quote spendieren. Das wäre eigentlich mein Wunsch, aber das ist noch nicht klar, ob die anderen Applikationen das "vollständige CSV-Format" wieder verkraften können.

        Ich erinnere mich außerdem, dass es noch an der Sprachversion und der manuellen Vervollständigung der Installation liegen könnte. Das kann ich aber von einem "normalen Anwender" nicht verlangen.

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    2. Hellihello Tom,

      ich erinnere nur, dass Excel mit VBA anderes CSV ausspuckt als mit exportieren, und dass es sein eigenes csv (eines von beiden) nicht lesen kann. Es könnte am Seperator liegen, also vielleicht mag es lieber Komma als Semikolon. Das würde ich mal testen.

      Ansonsten kannst Du aber Excel auch bei "Zellen teilen" oder so beibringen, anhand von anderen Separatoren zu splitten.

      Dank und Gruß,

      frankx

  2. Hallo Tom,

    Welchen Content-Type und welche zusätzlichen Header muss ich nehemn, dass Excel (2000) den Inhalt der response an den Semicolen sauber in Spalten trennt und die Zellen vernünftig füllt?

    das ist überhaupt kein Problem:

    Menü Daten -> Importieren,
    im Assistent zuerst "Getrennt", dann Trennzeichen Semikolon auswählen, fertig.

    Selbstverständlich kannst Du dies auch automatisieren, und es geht natürlich
    auch anders.

    Freundliche Grüße

    Vinzenz

    1. Hello,

      Welchen Content-Type und welche zusätzlichen Header muss ich nehemn, dass Excel (2000) den Inhalt der response an den Semicolen sauber in Spalten trennt und die Zellen vernünftig füllt?

      das ist überhaupt kein Problem:

      Menü Daten -> Importieren,
      im Assistent zuerst "Getrennt", dann Trennzeichen Semikolon auswählen, fertig.

      Selbstverständlich kannst Du dies auch automatisieren, und es geht natürlich
      auch anders.

      Danke Vinzenz, aber das war nicht die Aufgabe.

      Es ging um eine "Webabfrage", die man in Excel automatisch einbinden kann und die dann immer gleich neu durchgeführt wird, wenn das Excel-Datenblatt geöffnet wird.

      Ich habe die Lösung gefunden, leider konnte ich den Link nicht rechtzeitig sichern und weiß daher nicht mehr, wo. (wegen der Ehre *g*, ich denke aber Koentrupp oder wie der heißt.)...

      Excel hat mir den geöffneten Firefox mal eben umkonfiguriert.
      Zum Glück war er nach dem Neu-Öffnen wieder der alte!

      und habe es nun so umgebaut:

      <?php   ### get_mail_statistic_xls.php ###

      File MUST be written with horizontal tabs between the field values, but not with semicolons

      header("Content-Type: application/vnd.ms-excel");
      header("Content-Disposition: inline; filename="excel.xls"");

      readfile('/var/log/mailstatistic.log.xls');

      ?>

      Mein Shell-Script muss dann leider zwei Files pflegen, eines mit Semicolen und eines mit Tabulatoren.

      Alternativ könnte ich die auch von PHP wieder ersetzen lassen...

      Jedenfalls habe ich jetzt zwei Resssourcen eingerichtet im PHP-Bereich. Eine für Excel und eine für alle anderen. Der Aufwand ist doch vertretbar, auch wenn es eigentlich Schrott ist.

      Ich werde noch überlegen, ob ich PHP die Arbeit machen lasse, damit die Logs nicht redundant geschrieben werden müssen.

      Harzliche Grüße vom Berg
      http://bergpost.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      1. Hello,

        Ich habe die Lösung gefunden, leider konnte ich den Link nicht rechtzeitig sichern und weiß daher nicht mehr, wo. (wegen der Ehre *g*, ich denke aber Koentrupp oder wie der heißt.)...

        Nur der Ehre wegen:

        http://www.php-faq.de/q/q-code-excel.html

        Firefox hatte in der Zwischenzeit die ursprüngliche Session wiederhergestellt :-)

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  3. Die einfachste Möglichkeit, Daten automatisch in Excel zu bekommen und sicherzustellen, dass die Zellentrenner usw. richtig erkannt werden, ist, die Daten einfach als HTML-Tabelle auszugeben (d.h. angefangen mit <table> und aufgehört mit </table>, ohne HTML-Zeug drum herum) und dann einen Excel-Content-Type (application/vnd.ms-excel) zu senden.

    1. Hello Christian,

      Die einfachste Möglichkeit, Daten automatisch in Excel zu bekommen und sicherzustellen, dass die Zellentrenner usw. richtig erkannt werden, ist, die Daten einfach als HTML-Tabelle auszugeben (d.h. angefangen mit <table> und aufgehört mit </table>, ohne HTML-Zeug drum herum) und dann einen Excel-Content-Type (application/vnd.ms-excel) zu senden.

      Das habe ich aus dem Kontext heraus auch vermutet.
      Im Import-Assistenten von Excel wird man ja danach gefragt.

      Und diese Lösung erscheint mir als zusätzliche gar nicht so doof.
      Man hätte dann eventuell auch die Möglichkeit, diese Tabelle wieder mittels PHP in andere HTML-Seiten einzubinden. Ich denke, dass PHP beim readfile() (oder ähnlich, jedefalls 'passives' include!) der Mime-Type für Excel nicht stören wird.

      Muss ich nur noch ausprobieren, ob Excel die dann nortwendigen CSS-Angaben in den Elementen stört.

      So schließt sich der Datenaustausch-Kreis aber langsam.

      Das mit den "Mail-Statistik-Daten" habe ich hier nur als aktuelles Beispiel benutzt. Nachher sollen da andere Daten ausgetauscht werden, die aber ähnlichen Regeln unterliegen.

      Bleibt noch die Frage, ob Excel mit HTTPS klarkommt.

      Harzliche Grüße vom Berg
      http://bergpost.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  4. Hello,

    ich bekomme es leider nicht hin, dass Excel die Daten aus dem Web sauber auf Zellen verteilt.

    Abfrage:
    http://www.bitworks.de/statistic/get_mail_statistic.php

    So geht es:

    http://www.bitworks.de/statistic/get_mail_statistic_xls.php

    durch:

    <?php   ### get_mail_statistic.php ###

    File MUST be written with horizontal tabs between the field values, but not with semicolons

    header("Content-Type: application/vnd.ms-excel");
    header("Content-Disposition: inline; filename="excel.xls"");

    readfile('/var/log/mailstatistic.log.xls');

    ?>

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)