Kevin: XLS -» HTML Konverter ?

Hallo,

ich suche einen sauber funktionierenden (!) Konverter für Excel 7.0 Dateien nach HTML. Das mitgelieferte M$-Zeugs ist ja recht dürftig im Ergebnis. Hat da jemand Erfahrungen? Ich habe hier einen 800 Seiten Katalog ....

So denn,

mfg. Kevin.

  1. Hallo Kevin,

    ich suche einen sauber funktionierenden (!) Konverter für Excel 7.0 Dateien nach HTML. Das mitgelieferte M$-Zeugs ist ja recht dürftig im Ergebnis. Hat da jemand Erfahrungen? Ich habe hier einen 800 Seiten Katalog ....

    Etwas besseres als den Excel Internet Assistant von MS gibt es meines Wissens nicht dafuer. Damit kannst Du auch beliebige Teile einer Tabelle selektieren und in eine HTML-Datei exportieren. Bei langen Tabellen ist das unbedingt zu empfehlen, da der Seitenaufbau im Browser sonst elend langsam wird.

    Bei sehr grossen Datenmengen ist allerdings zu ueberlegen, ob es nicht besser ist, die Daten in eine CSV-Datei (kommabegrenzt) zu exportieren und diese Datei als Input fuer ein CGI-Script zu machen, das die Datei aufgrund von Anwenderanfragen durchsucht und nur die gefundenen Datensaetze dynamisch als HTML an den Browser sendet.

    Viele Gruesse
      Stefan Muenz

    1. Hallo,
      für kleine Tabellen, die auch im Browser dargestellt werden können, ist das folgende Script sinnvoll:

      -------schnipp------------------------------------------------
      #dieses Script liest eine CSV Datei und schreibt die
      #Daten in eine HTML Tabelle
      #Die Zeilen- und Spaltenanzahl ergibt sich automatisch

      print "Content-type: text/html\n\n";
      print "<HTML><HEAD><TITLE>Telefonnummern</TITLE></HEAD>
      <BODY><LINK REL='stylesheet' HREF='ROLF.CSS' TYPE='text/css'>";
      @Zeilen = ("");
      open(LISTE, "<kontakte.csv") || die "Datei mit Telefonnummern nicht gefunden\n";
      while(<LISTE>) { push(@Zeilen,$_); }
      close(LISTE);
      print '<H3>Telefonnummern der Ansprechpartner</H3>';
      $i=0;
      for(@Zeilen)
      {
      @list[$i]=$_;
      $i++;
      }
      #print $list[1],'<br>';    #ok, die erste Zeile hätten wir

      $zan = $i-1;                  #Die Zeilenanzahl steht hier
      #Ermittelung der Spaltenanzahl

      $Anzahl = $list[1] =~ tr/;/;/;
      $span = $Anzahl+1;
      #print "Die Tabelle hat ",$span," Spalten!<br>";
      #print "Die Tabelle hat ",$zan," Zeilen";
      print "
      <TABLE border=1 cellspacing=0 align='center'>";

      $i=1;
      for(1..$zan)
      {
      @sp = split(/;/,$list[$i],$span);
      $i++;
      print "
      <TR>";
      $hilf=0;
      for (1..$span)
      {
        print "<TD>@sp[$hilf]</TD>";
        $hilf++;
      }
      print "</TR>";
      }
      print "</TABLE>";
      print "<BR></BODY></HTML>";
      #Script Ende
      ---------schnapp-----------------------

      Für größere Tabellen ist das nicht sinnfällig! Um auf Stefans Tip zurückzukommen, hier ist ein kleines einfaches Suchprogramm:

      ---------schnipp-----------------------
      #Das Script soll die Datei kunden.csv öffnen und
      #Kunden suchen

      read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
      print "Content-type: text/html\n\n";
      print "<html><head><title>Fax an 2nd Level</title></head>\n";
      print "<body bgcolor='#FFFFFF'>\n";

      #Formularfelder auslesen
      @Formularfelder = split(/&/, $Daten);
      $i = 0;
      foreach $Feld (@Formularfelder)  
      {
        ($name, $value) = split(/=/, $Feld);
        $value =~ s/%0D/<br>/g;  
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $value =~ s/<!--(.|\n)*-->//g;      
        $Formular{$value} = $value;
        #print "$Formular{$value}";
        $subegriff[$i] = $Formular{$value};
        $i++;
      }

      print "<H2>Suchergebnis:</H2><br>";
      print "Gesucht wurde nach: ",$subegriff[0],"<br>";

      #Hier wird die Dateig "kunden.csv" geöffnet, ausgelesen und geschlossen

      @Zeilen = ("");
      open(KUNDEN, "<kunden.csv") || die "Datei mit Kunden nicht gefunden\n";
      $i=0;
      while(<KUNDEN>)
      {
      push(@Zeilen,$_);
      @record[$i] = $_;
      $i++;
      }
      close(KUNDEN);

      #print "Hier der Record 22 aus der Datei: <br>";
      #print $record[22],"<br>";
      #print "Die Tabelle hat ",$i," Records<br>";
      #print "Die Tabelle hat ",$record[22] =~ tr/;/;/+1," #Spalten<br>";
      #und hier die eigentliche Suche
      $hilf=0;
      $treffer=0;
      for(1..$i)
      {
      $vgl = index($record[$hilf],$subegriff[0]);
      if ($vgl >= 0)
      {
        $ergeb[$treffer] = $record[$hilf];
        $treffer++;
      }
      $hilf++;
      }
      if($treffer eq 1)
      {
      print "Es wurde ",$treffer," Eintrag gefunden!<hr>";
      }
      else
      {
      print "Es wurden ",$treffer," Einträge gefunden!<hr>";
      }

      $i=0;
      for(1..$treffer)
      {
      print $ergeb[$i],"<hr>";
      $i++;
      }
      print "</body></html>\n";
      #Script Ende
      ---------schnapp---------------------------
      Eine Suche in einer Tabelle mit 15 Spalten und 8000 (achttausend) Zeilen dauert ca 3 bis 5 sec. Selbst bei 8000 Treffern wird die Zeile
      "Es wurden 8000 Einträge gefunden" nach wenigen sec. angezeigt...Das Laden der Seite dauert..., kann jedoch abgebrochen werden um die Suche zu verfeinern.

      Viele Grüße
      Rolf