2009-06-10 21 views
3

Ich habe eine HTML-Seite, die eine Flash-Tabelle (FusionCharts) und HTML-Tabelle hat. Ich muss diese ganze Sache in Excel umwandeln. HTML-Tabelle sollte in Excel-Zellen angezeigt werden. Flash-Diagramm kann als Bild angezeigt werden.Was ist der beste Weg, HTML in Excel zu konvertieren

Gibt es eine Open-Source-API, die wir verwenden könnten, um dies zu erreichen? Können Sie mich wissen lassen, was die möglichen Optionen sind?

Kann dies mit Hilfe von JavaScript allein gemacht werden.

Antwort

2

Es gibt eine sehr gute Java POI API, die Ihnen das erlauben würde, aber es ist Java.

Wenn Sie unter Win32 sind, können Sie auch Excel's COM API verwenden, es gibt einige Tutorials im Netz.

5

Die HTML-Tabelle ist relativ einfach. Sie können die Seite herunterladen, den HTML-Code analysieren (es stehen verschiedene HTML-Parsing-Bibliotheken zur Verfügung), die Tabelle extrahieren und sie in CSV konvertieren (die Excel laden kann) oder direkt eine Excel-Datei erstellen, z. Verwenden von Java POI, wie oben vorgeschlagen.

Der Flash-Teil ist deutlich schwieriger. Es gibt eine ganze Reihe von Werkzeugen, um Flash zu einem Bild zu erfassen, Sie müssen eines davon verwenden. Dies kann schwierig sein, da Flash interaktiv sein kann. Daher müssen Sie den Flash-Teil möglicherweise fernsteuern, damit das richtige Bild vor der Aufnahme angezeigt wird. Schwer zu sagen ohne mehr Infos.

Das heißt, Screen-Scraping (was Sie tun) ist immer arbeitsintensiv und zerbrechlich. Sie sollten wirklich für eine bessere Schnittstelle drücken, um Ihre Daten von zu bekommen, es wird viel Aufwand auf lange Sicht sparen.

1

Was Sie versuchen zu tun ist zerbrechlich und schwierig zu warten. Sie sollten versuchen, einen CSV-Feed zu erstellen, um die Daten abzurufen. Alles was es braucht ist, dass jemand mitkommt und das HTML ändert und Ihr Scraper wird sich darüber lustig machen (wahrscheinlich Jahre nachdem sich jemand daran erinnert, wie Ihr Programm funktioniert).

Versuchen Sie, CSV und Bilddaten von der ursprünglichen Quelle (dh Datenbank oder was auch immer) zu erhalten und die Excel-Datei daraus zu erstellen.

1

ich Spliff Antwort hinzufügen wird, dass, wenn Sie Ihre Daten als CSV-Datei haben Sie den MIME-Typ der Seite application/vnd.ms-excel einstellen können, die die Seite in Excel

+1

wow. Das wusste ich nicht. Aber Excel saugt oft CSV in Regionen, die ";" als Listen-Trennzeichen im Gegensatz zu "," ... –

+0

stimme ich zu und die Liste der Dinge, die Excel saugt, könnte für eine Weile weitergehen :) Ich habe dies hauptsächlich verwendet, um Berichte von einem serverseitigen Skript, so dass ich hatte die Möglichkeit, sicherzustellen, dass das Datenformat Excel nicht schaden würde. –

+0

+1 für die Erwähnung von Regionen mit ";" Separator. In den Niederlanden ist das Dezimaltrennzeichen ein Komma. Wenn Floats einen Punkt haben, interpretiert Excel die Zahl als String, es sei denn, ich ändere die regionalen Einstellungen in Windows. Das Generieren von CSV auf dem Server und das Erwarten, dass es in jedermanns Excel geladen wird, wird garantiert fehlschlagen. –

3

Excel öffnen kann HTML-Tabellen standardmäßig konvertieren Der einfachste Weg, dies zu erzwingen, ist das Speichern der HTML-Datei mit einer XLS-Erweiterung. Excel öffnet dann das XLS, als wäre es seine native Arbeitsmappe.

4

Legen Sie den Inhaltstyp der Seite auf "application/vnd.ms-excel" fest. Wenn die HTML-Seite nur eine Tabelle ist, wird sie mit Excel geöffnet und sieht perfekt aus. Sie können sogar Hintergrundfarben und Schriftstile hinzufügen.

einige dieser Inhaltstypen Versuchen

application/excel 
application/vnd.ms-excel 
application/x-excel 
application/x-msexcel 
2

ich keine Ratschläge auf dem Flash-Teil bieten kann, aber ich habe viele Male in Excel HTML-Tabelle durchgeführt. Ja, Excel kann HTML-Tabellen öffnen, aber die meisten HTML-Tabellen da draußen haben überflüssigen Mist in ihnen, die es fragil machen können, die Tabellen konsistent zu analysieren.

CPAN-Modul HTML::TableExtract ist ein wunderbares Modul, mit dem Sie sich auf die nicht-präsentationsspezifischen Aspekte der Tabelle konzentrieren können, die Sie extrahieren möchten.Geben Sie einfach die Spaltenüberschriften an, an denen Sie interessiert sind, und geben Sie ggf. den Titel oder die Klasse der Tabelle an. Möglicherweise müssen Sie die zurückgegebenen Zeilen ein wenig zurückgeben, aber das ist wesentlich einfacher, als mit der zugrunde liegenden Tag-Suppe in ihrer ganzen Pracht zu tun zu haben.

Weiter, für die Ausgabe in Excel-Format, bleiben Sie mit Spreadsheet::WriteExcel anstatt der OLE-Schnittstelle. Auf diese Weise müssen Sie Excel nicht installieren, damit Ihr Programm funktioniert und die Dinge ein wenig schneller laufen.

Stellen Sie sicher, dass Sie den Datentypen von Zellen angeben, wenn Sie nicht möchten, dass Inhalte beim Öffnen der Dateien automatisch von Excel geändert werden (ein anderer Grund, warum ich CSV-Dateien nicht gerne sende). Verwenden Sie eine Konfigurationsdatei zum Formatieren von Informationen, damit Sie die Darstellung der Tabelle ändern können, ohne das Programm ändern zu müssen.

Sie können immer die integrierten Diagrammfunktionen von Excel verwenden, um die Website-Diagramme zu ersetzen.

Diese Kombination hat es mir ermöglicht, ziemlich gut aussehende Dokumente mit mehreren hundert Megabyte Daten (mit Logos und Bildlinks usw.) aus nur ein paar hundert Zeilen Perl und ein paar Arbeitstage zu erstellen.

Verwandte Themen