Rolf: Tabelle einlesen

Beitrag lesen

Moin,

Ich möchte in meinem cgi-Programm eine Exel Tabelle einlesen, welche ich in eine *.txt Datei umgewandelt habe, da ich nicht weiß, ob Perl eine *.xls Datei einlesen kann.

»»

*.xls Dateien kann PERL mit OLE lesen:

---schnipp--->

Script liest eine Exceltabelle aus und zeigt den Inhalt im Browser

Script geschrieben 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('d:\abase\adres.xls');
my $Sheet = $Book->Worksheets(1);
my $array = $Sheet->Range('B2:G54')->{'Value'};
$Book->Close;

print <<EOHTML;
content-type:text/html\n\n
<HTML><HEAD>
<TITLE>Meine Privatadressen</TITLE>
</HEAD><BODY BGCOLOR='#FFFFE6'>
<h3><u>Meine Privatadressen</u></h3>
EOHTML

print "<table border=1 align=center cellspacing=0>\n";
print "<tr bgcolor=silver>
<th>Name</th>
<th>Vorname</th>
<th>Straße</th>
<th>PLZ</th>
<th>Ort</th>
<th>Telefon</th>
</tr>";
foreach my $ref_array (@$array){
print "<tr>\n";
foreach my $scalar (@$ref_array){
  if($scalar){
   print "<td><font color=blue>$scalar</font></td>\n";
  }
  else{
   print "<td><font color=red>Nicht angegeben</font></td>\n";
  }
}
print "</tr>\n";
}
print "</table>\n
</body></html>";
<---schnapp---evntl.überarbeitungsbedürftig---<

Leider blick ich durch die 'split-Technik' noch nicht so durch.
Ich möchte nach jedem Tabulator, nicht nach jedem Leerzeichen die Zeile teilen.
Welche Parameter muß ich da benutzen???? /s??

Hoffe auf Hilfe!!

TED116

hmm, split....nach Tabulator? könnte so gehen:

splittet in 2 Teile nach den ersten beiden Tabs

B1: ($teil1, $teil2) = split(/\t/,$zeile,2);

splittet in 3 Teile nach den ersten 3 Tabs

B2: ($teil1, $teil2, $teil3) = split (/\t/,$zeile);
B3:
Die Datei: rolf otto ulla # Tab-getrennte Einträge
Das Script:
open (ROLF, "rolf.txt");
@rolf = <ROLF>;
close (ROLF);
for (@rolf){
($teil1, $teil2, $teil3) = split (/\t/,$_,3);
print "$teil1 $teil2 $teil3\n";
}

In der Hoffnung, dass nun alles klar ist :-)

Viele Grüße, Rolf

PS: Das Meiste zu PERL findest Du hier auf diesem Server!!!