XLS2HTM Heureka!
Rolf
Hallo,
wer schon immer danach suchte: eine Exceltabelle nach HTML zu wandeln... hier ist eine Grundlage für individuelle Weiterentwicklungen.
Einen wunderschönen SamstagAbend auch, Rolf
use strict;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';
$Win32::OLE::Warn = 3;
my $Excel = Win32::OLE->GetActiveObject('Excel.Application') ||
Win32::OLE->new('Excel.Application', 'Quit');
my $Book = $Excel->Workbooks->Open('c:\links.pl\cgi-bin\tree.xls');
my $Sheet = $Book->Worksheets(1); # entspricht Tabelle1, erstes ABlatt
my $array = $Sheet->Range('A1:D22')->{'Value'};
$Book->Close;
print "content-type:text/html\n\n";
print "<HTML><HEAD>
<TITLE>Eine Excel Tabelle als HTML Tabelle</TITLE>
</HEAD><BODY BGCOLOR=silver>";
print "<h3>Eine Excel Tabelle öffnen - als HTML Tabelle ausgeben:</h3>";
print "<table border=1 align=center cellspacing=1>\n";
foreach my $ref_array (@$array){
print "<tr>\n";
foreach my $scalar (@$ref_array){
print "<td>$scalar</td>\n";
}
print "</tr>\n";
}
print "</table>\n
</body></html>";
kit.
man perl' or
perldoc perl'. If you have access tothe
Cooles Scripts,
Ich werde das mal ausprobieren.
CU Thomas
Hallo,
wer schon immer danach suchte: eine Exceltabelle nach HTML zu wandeln... hier ist eine Grundlage für individuelle Weiterentwicklungen.
Einen wunderschönen SamstagAbend auch, Rolf
--- Anfang Script --->
Script liest eine Exceltabelle aus und zeigt den Inhalt im Browser
Script geschreiben und getestet von Rolf Rost am Samstag, 13. März 1999
use strict;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';
$Win32::OLE::Warn = 3;my $Excel = Win32::OLE->GetActiveObject('Excel.Application') ||
Win32::OLE->new('Excel.Application', 'Quit');my $Book = $Excel->Workbooks->Open('c:\links.pl\cgi-bin\tree.xls');
my $Sheet = $Book->Worksheets(1); # entspricht Tabelle1, erstes ABlatt
my $array = $Sheet->Range('A1:D22')->{'Value'};
$Book->Close;print "content-type:text/html\n\n";
print "<HTML><HEAD>
»» <TITLE>Eine Excel Tabelle als HTML Tabelle</TITLE>
»» </HEAD><BODY BGCOLOR=silver>";
print "<h3>Eine Excel Tabelle öffnen - als HTML Tabelle ausgeben:</h3>";
print "<table border=1 align=center cellspacing=1>\n";
foreach my $ref_array (@$array){
»» print "<tr>\n";
»» foreach my $scalar (@$ref_array){
print "<td>$scalar</td>\n";
»» }
»» print "</tr>\n";
}
print "</table>\n
»» </body></html>";
--- Ende Script ----<
Info to PERL, command -line: perl -v
This is perl, version 5.005_02 built for MSWin32-x86-object
(with 1 registered patch, see perl -V for more detail)
Copyright 1987-1998, Larry Wall
Binary build 509 provided by ActiveState Tool Corp.
http://www.ActiveState.com
Built 13:37:15 Jan 5 1999
Perl may be copied only under the terms of either the Artistic License or
the
GNU General Public License, which may be found in the Perl 5.0 source
kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using
man perl' or
perldoc perl'. If you have access tothe
Internet, point your browser at http://www.perl.com/, the Perl Home Page.
Hallo,
das geht aber einfacher: Waehle in Excel "Datei/Speichern unter..." mit CSV als Dateityp. Lies diese Datei in Perl ein, mach ein vernuenftiges Split mit Semikolon als Separator (das ist ja DAS Fachgebiet fuer Perl) und gib das HTML aus.
Da brauchst Du keine Win32-Module (die Du auf einem UNIX-System vermutlich nicht finden wirst, vergewaltigst Perl nicht, und brauchst Dir auch keine Gedanken um abstuerzende OLE-Server machen.
Calocybe
Hallo Calocybe,
das ist freilich richtig und da hast Du völlig recht mit dem was Du da sagst. Ich verwende im Intranet auch ein kleines Script was kleine Tabellen (Telefonnummern usw.) zur Laufzeit aus einer CSVTabelle nimmt und in den Browser schreibt - funktioniert prima. Bei etwaigen Änderungen braucht nur die CSVTabelle geändert werden und die im Browser gezeigten Tabellen sind immer auf dem neuestem Stand.
Ob der Zugriff direkt auf eine ExcelTabelle funktioniert - das wollte ich einfach mal ausprobieren und ich habe auch längere Zeit danach gesucht - deswegen "heureka". Das hier gezeigte Beispiel habe ich aus der Doku von ActivePerl, leicht geändert...
Noch ein paar philosophische und subjektive Betrachtungen: Heutzutage ist es doch so, dass nur noch geklickt wird. Mich hat einmal einer gefragt, wie unter NT Nachrichten ins Netz geschickt werden und er war sichtlich verblüfft darüber dass es nur über die Kommandozeile geht. Warum nicht ein Fensterchen zum Klicken so wie Winpopup unter Windows 95?
Genauso ist das mit Excel. So eine läppische Tabelle die zum Browser soll als CSVDatei zu bearbeiten, dafür brauche ich persönlich auch kein Excel. Die in den Browser sollen, das sind ohnehin Tabellen die höchstens 30, 40 Zeilen haben --- und dafür gleich Excel??? Nja, mit Excel kann man schön die Spalten sortieren und so weiter. Und wenn der Server nun eine NT Maschine ist.......
Verwandtes Thema: Datenbanken <---> FlatFiles. Hinsichtlich dieses Themas schließe ich mich persönlich auch dem an, was Stefan Muenz einmal weiter unten darüber gesagt hat.
Viele Grüße, Rolf
Hallo Calocybe,
Noch ein paar philosophische und subjektive Betrachtungen: Heutzutage ist es doch so, dass nur noch geklickt wird. Mich hat einmal einer gefragt, wie unter NT Nachrichten ins Netz geschickt werden und er war sichtlich verblüfft darüber dass es nur über die Kommandozeile geht.
Was fuer Nachrichten meinst Du damit? Etwa NET SEND? Ich persoenlich benutze das nie. Selbst fuer Ein-Zeilen-Nachrichten schicken wir gewoehnlich gleich ne EMail (kostet ja nichts im Intranet).
Genauso ist das mit Excel. So eine läppische Tabelle die zum Browser soll als CSVDatei zu bearbeiten, dafür brauche ich persönlich auch kein Excel.
Find ich auch.
Und wenn der Server nun eine NT Maschine ist.......
Ja, was ist dann? Oder meinst Du, wenn der Server KEINE NT Maschine ist? Achso ja, dann macht es Sinn. Aber der Tag wird kommen, da wird Microsoft Excel auf Linux portieren, oder sie werden untergehen! Hoffentlich...
Calocybe