EXCEL: Webabfrage durchführen
Tom
- software
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
Hello,
Abfrage:
http://www.bitworks.de/statistic/get_mail_statistic.phpZur 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
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
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
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
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
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 ###
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
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
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.
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
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 ###
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