Speisekarte in Exceltabelle nach HTML konvertieren
Sebastian Becker
- php
Hallo,
für eine Restaurantseite soll die Speisekarte sowie die Tages- und Wochenkarte im Internet angeboten werden. Meine Idee war jetzt folgende:
Die Karten werden mit Excel erstellt. Der Ausdruck erfolgt über Word (evtl. mit der Serienbrieffunktion?). Fürs Internet werden die Dateien vom Restaurantbetreiber regelmäßig über ein Formular auf den Server geladen. Dort werden sie dann mit PHP geparst und schön formatiert als HTML und evtl auch als PDF ausgegeben.
Nun meine Fragen: Ist das die einfachste Methode - Office-Paket vorausgesetzt - um mit einmaliger Dateneingabe Print und Internet gleichzeitig zu bedienen, oder weiß jemand eine bessere Alternative?
Wie kann ich die Excel-Dateien am besten parsen (Linux-Server), möglichst mit einer Bibliothek auf Open-Source-Basis?
Danke für alle Tips, Grüße,
Sebastian Becker
Ahoi Sebastian Becker,
Wie kann ich die Excel-Dateien am besten parsen (Linux-Server), möglichst mit einer Bibliothek auf Open-Source-Basis?
am besten wäre wohl die exel tabelle als csv zu speichern. dadurch hat
man jede zeile in einer zeile und durch semikolen getrennt, das
umwandeln in eine html tabelle oder pdf (da bietet sich fpdf an)
zelle1_1;zelle1_2;zelle1_3;
zelle2_1;zelle2_2;zelle2_3;
etc.
wobei die speisekarte wohl 2 spaltig ist (essen;preis;)
MfG
\ / \ /´¯.l.¯
\ /Hallo, Daniel,
am besten wäre wohl die exel tabelle als csv zu speichern.
Das wäre noch eine Idee. Ich weiß aber nicht, ob ich das den Restaurantleuten beibringen kann - wahrscheinlich wollen Sie die Tabellen irgendwie formatieren und wissen nicht, wie man als CSV abspeichert, und schon kann man das Ganze vergessen. Besser wäre es also, das Original Excel-Format zu verwenden, und dafür brauche ich wie gesagt einen Parser ...
wobei die speisekarte wohl 2 spaltig ist (essen;preis;)
Fünfspaltig: Datum, Essen, Beschreibung, Preis, Kategorie
Grüße,
Sebastian
Hi Sebastian,
am besten wäre wohl die exel tabelle als csv zu speichern.
Das sehe ich auch so.
Das wäre noch eine Idee. Ich weiß aber nicht, ob ich das den Restaurantleuten beibringen kann - wahrscheinlich wollen Sie die Tabellen irgendwie formatieren und wissen nicht, wie man als CSV abspeichert, und schon kann man das Ganze vergessen.
Eigentlich sollte das nicht das Problem sein. Wichtig ist, daß die Daten immer in den gleichen Spalten gespeichert sind, die Zeilen spielen nicht die große Rolle. Dann eine kleine VBA-Routine erstellen, irgendwo eine Schaltfläche oder einen Menüeintrag einbauen und schon wird die csv-Datei automatisch erstellt.
Eine weitere Möglichkeit wäre, die Daten mittels Formeln in eine unformatierte Tabelle zu übernehmen und die dann als csv zu zu speichern. Bei solchen Sachen bin ich allerdings immer leicht skeptisch, weil Formeln von Anwendern auch gern mal gelöscht werden.
Besser wäre es also, das Original Excel-Format zu verwenden, und dafür brauche ich wie gesagt einen Parser ...
Hm, naja, warum einfach, wenn es umständlich geht? ;-)
wobei die speisekarte wohl 2 spaltig ist (essen;preis;)
Fünfspaltig: Datum, Essen, Beschreibung, Preis, Kategorie
Das sollte auch keine große Rolle spielen.
Viele Grüße
Jörg
Moin,
Wie kann ich die Excel-Dateien am besten parsen (Linux-Server), möglichst mit einer Bibliothek auf Open-Source-Basis?
Wie wäre das http://www.paggard.com/projects/xls.reader/?
Oder falls genug Kohle da ist(ab ~3400 Euro), http://www.golem.de/0310/27714.html;-)
SteBu
Hallo, SteBu,
Wie kann ich die Excel-Dateien am besten parsen (Linux-Server), möglichst mit einer Bibliothek auf Open-Source-Basis?
Wie wäre das http://www.paggard.com/projects/xls.reader/?
schon mal nicht schlecht - kostet aber auch immerhin 67 USD
Oder falls genug Kohle da ist(ab ~3400 Euro), http://www.golem.de/0310/27714.html;-)
;-)))
Das wäre wohl auch mit Kanonen auf Spatzen geschossen: Ich will ja nicht die Funktionalität von Excel im Internet emulieren, sondern nur ein paar Daten auslesen ...
Grüße,
Sebastian
Tag Sebastian.
für eine Restaurantseite soll die Speisekarte sowie die Tages- und Wochenkarte im Internet angeboten werden. [...] Die Karten werden mit Excel erstellt. [...] Fürs Internet werden die Dateien vom Restaurantbetreiber regelmäßig über ein Formular auf den Server geladen.
Vielleicht wäre dieses Excel-Makro hilfreich. Einfach beim Kunden installieren, der drückt in Excel auf eine Schaltfläche, die das Makro aufruft und heraus kommt eine HTML-Tabelle, die er dann hochlädt. Und das Parsen dieser Datei auf dem Server dürfte eigentlich keine Schwierigkeiten bereiten.
Siechfred
Hallo, Siechfred,
Vielleicht wäre dieses Excel-Makro hilfreich. Einfach beim Kunden installieren, der drückt in Excel auf eine Schaltfläche, die das Makro aufruft und heraus kommt eine HTML-Tabelle, die er dann hochlädt. Und das Parsen dieser Datei auf dem Server dürfte eigentlich keine Schwierigkeiten bereiten.
das wäre eine Möglichkeit - allerdings müsste der Kunde dann die Excel-Dateien immer konvertieren, was möglicherweise schon zuviel verlangt ist ;-) ...
Ich hatte eher an so etwas gedacht, aber auf Open-Source-Basis ...
Zakkis PHP Excel Parser Pro
Grüße,
Sebastian
Moin Sebastian,
Hallo, Siechfred,
Vielleicht wäre dieses Excel-Makro hilfreich. Einfach beim Kunden installieren, der drückt in Excel auf eine Schaltfläche, die das Makro aufruft und heraus kommt eine HTML-Tabelle, die er dann hochlädt. Und das Parsen dieser Datei auf dem Server dürfte eigentlich keine Schwierigkeiten bereiten.
das wäre eine Möglichkeit - allerdings müsste der Kunde dann die Excel-Dateien immer konvertieren, was möglicherweise schon zuviel verlangt ist ;-) ...
wenn du dir das Beispiel anguckst und dich noch ein bisschen mit VBA beschäftigst, kannst du dem Anwender eigentlich sogar jegliche Arbeit abnehmen, er muss sich noch nichtmals um den Upload kümmern (lediglich eine Internet-Verbindung muss vorhanden sein)...
Mal das Gerüst meiner Idee:
Du fängst das Ereignis Workbook_BeforeSave ab, um das Makro automatisch bei jedem Speichern zu starten.
Statt wie bei Roman Koch Application.Selection durchläufst du ActiveSheet.UsedRange, dadurch werden alle Zellen angesprochen, die im aktuellen Worksheet genutzt werden.
In der Schleife baust du keinen String (sTable) zusammen, sondern schreibst über das FileSystemObject direkt eine HTML-Datei auf die Festplatte und überträgst diese schließlich mit einer kleinen Routine
Sub Upload()
Dim iFile As Integer
Dim sLog As String, sFile As String
iFile = FreeFile
sLog = "C:\Temp\LogIn.txt" ' irgendeine temporäre Datei auf deiner Platte
Open sLog For Output As #iFile
Print #iFile, "dein_Username"
Print #iFile, "dein_Password"
Print #iFile, "ascii"
Print #iFile, "put C:\Temp\deine_Datei.html"
Print #iFile, "quit"
Close
Shell "ftp -s:" & sLog & " dein_FTP-Server", vbHide
End Sub
Das ist eindeutig für den User einfacher zu bedienen als irgendein Uploadformular (er muss sich nämlich um nichts kümmern sondern nur seine Speisekarte erstellen und speichern) und funktioniert (ich setze das Verfahren seit ca. 18 Monaten ein), u.a. werden http://www.ferienhaus-sudfrankreich.de/preise.html und http://www.in-der-speisekammer.de/html/body_mittagstisch.html auf diese Weise erzeugt.
Glück auf
Dirk
Hallo, Dirk,
Mal das Gerüst meiner Idee: [...]
Das ist eindeutig für den User einfacher zu bedienen als irgendein Uploadformular (er muss sich nämlich um nichts kümmern sondern nur seine Speisekarte erstellen und speichern) [...]
So ein Uploadformular wäre sicherlich gerade noch zumutbar - aber wenn's ohne geht umso besser. Allerdings müsste auch eine Formatierung des HTML-Codes zur Anpassung an das Seitenlayout möglich sein.
Danke also für die Anregung - ich werd' mir das mal ausprobieren, sofern meine absolut rudimentären VBScript-Kenntnisse ausreichen, Dein Skript zu implementieren ...
Grüße aus Berlin,
Sebastian
Darf ich Dich bei evtl. Problemen zu einem späteren Zeitpunkt mal anmailen?
Moin Sebastian,
So ein Uploadformular wäre sicherlich gerade noch zumutbar - aber wenn's ohne geht umso besser. Allerdings müsste auch eine Formatierung des HTML-Codes zur Anpassung an das Seitenlayout möglich sein.
Klar, das geht, du schreibst halt per VBA eine Textdatei, genauso wie sonst von Hand im Editor, somit ist alles möglich...
Darf ich Dich bei evtl. Problemen zu einem späteren Zeitpunkt mal anmailen?
Kein Problem, die Adresse ist vorname@nachname.net, wobei das natürlich passend ersetzt werden muss <g>
Glück auf
Dirk