CSV to HTML?!?!

Julia-DD

Welscher Taubenapfel
Registriert
27.08.06
Beiträge
761
Hallo,

hat jemand von euch einen tip, wie ich möglichst einfach ein .csv in einen HTML Table überführen kann? Am liebsten wäre mir ein Script, aber es muss auch auf Win auszuführen sein. Script deswegen, weil es regelmäßig gemacht werden soll und nicht nur eine Einmalaktion ist.

Das Ziel: Wir haben ein Excel, welches wir gerne als HTML zeigen wollen, aber der Code, den Excel ausgibt, ist grauenhaft und liefert eine super langsame Performance. Deswegen der Umweg über CSV. Falls jemand einen einfacheren Weg kennt, bin ich für solche Hinweise natürlich auch sehr dankbar.

Beste Grüße,
Julia (die nach ewigem Googeln so langsam am verzweifeln ist)
 

Julia-DD

Welscher Taubenapfel
Registriert
27.08.06
Beiträge
761
Okay, ich hab jetzt mal rumprobiert, aber so richtig mag er mein CSV nicht. Und ich kann das auch nicht umschreiben: Es hat über 77000 Zeichen und später muss es eine Ein-Klick Lösung sein, weil wir nicht jeden Tag da extra Änderungen machen können.

Vll erwarte ich ja zuviel :( Warum kann Excel kein sauberes HTML ausgeben? *seufz*
 

Toddy

Wohlschmecker aus Vierlanden
Registriert
10.05.04
Beiträge
242
Falls diese HTML Datei auf einem Server publiziert werden soll, und auf diesem Server PHP oder ähnliches läuft, könntest du auch in dieser Sprache ein solches Script sehr einfach erstellen (lassen).

Vorteil: Du lädst nur noch das CSV hoch, der Server generiert daraus automatisch die HTML Datei, ohne dass du es extra konvertieren musst. (Für PHP z.B.)
 

Maluku

Finkenwerder Herbstprinz
Registriert
10.05.08
Beiträge
464
Dein Problem ist glaube ich: Excel speichert CSVs in deutsch mit Semicolon statt Comma, das mag das Skript dann wohl net.

Ich hab mal auf die schnelle das hier geschrieben:
(Braucht Perl mit Text::CSV installiert)
Code:
#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV;
use IO::File;
use CGI qw/table Tr td th/;
my $csv = Text::CSV->new(sep_char=>";");
die "Usage: $0 file.csv > file.html\n" unless @ARGV;
my $file=IO::File->new($ARGV[0]);
my $headers=$csv->getline($file);
my @rows;
while (my $row = $csv->getline($file)) {
    print @$row;
    push @rows,$row;
}
print table(Tr(th($headers),map {td($_)} @rows));
Da ich grade kein Excel hab, kann ich es nicht ausprobieren.

Wenn deine CSV-Datei keine Headers hat musst du in der letzten Zeile das th durch ein td ersetzen

Code:
print table(Tr(td($headers),map {td($_)} @rows));