Exceldokument lesen
JimBo
- programmiertechnik
Hallo,
ich habe da eine Frage.
Vorhaben:
Ein mir vorliegendes Exceldokument mit etwa 200 Datensätzen möchte ich einlesen (VBScript/PHP/ASP), einige Formatierungen verändern
(z.b. 10-02-2007 -> 10.02.2007)und den ursprünglichen Eintrag überschreiben.
Problem:
Grundsätzlich weiß ich wie es laufen muss, jedoch weiß ich nicht wie ich es am besten umsetzen soll. Hat jmd. da schon Erfahrungen gesammelt? Könnte mir jmd. einen Tipp geben, wie ich dies umsetzten kann?
Zusätzlich:
Es wäre schön, wenn es eine Lösung gibt, welche nich zu Zeitaufwendig ist. Evtl. existieren auch schon fertige Scripte bzw. Programme die solch lästige Arbeit abnehmen. Diese sind mir nur nicht bekannt.
Vielen Danke
Grüße
JimBo
moin,
Grundsätzlich weiß ich wie es laufen muss, jedoch weiß ich nicht wie ich es am besten umsetzen soll. Hat jmd. da schon Erfahrungen gesammelt? Könnte mir jmd. einen Tipp geben, wie ich dies umsetzten kann?
mit PERL ist das ganz einfach, swu. Das Script verwende ich gelegentlich zum Umwandeln einer Excel-Tabelle in eine HTML-Tabelle (nur lokal). Optional wird der HTML-Code in der Zwischenablage gespeichert und kann dadurch einfach eingefügt werden.
--roro
#!/usr/bin/perl
# Rolf Rost 11.02.2007
###########################################################################
my $file = 'd:\tmp\tab.xls';
my $range = 'a1:d4';
my $worksheet = 1;
###########################################################################
use strict;
use Win32::Clipboard;
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($file);
my $Sheet = $Book->Worksheets($worksheet);
my $array = $Sheet->Range($range)->{'Value'};
$Book->Close;
my $clip = "<table border=1 width='100%' cellpadding=5 cellspacing=0>\n";
foreach my $ref_array (@$array) {
$clip .= "<tr>\n";
$clip .= "<td>";
$clip .= join("</td><td>", @$ref_array);
$clip .= "</td>\n";
$clip .= "</tr>\n";
}
$clip .= "</table>\n";
#print $clip;
my $CLIP = Win32::Clipboard($clip);
mit PERL ist das ganz einfach, swu.
Ich finde deinen Weg umständlich, wozu gibt es Spreadsheet::ParseExcel. Das sähe dann so aus:
use strict;
use diagnostics;
use Spreadsheet::ParseExcel;
print "Content-type: Text/html; charset=iso-8859-1\n\n";
my $file = 'tabelle.xls';
my $excel = Spreadsheet::ParseExcel::Workbook->Parse($file);
my $sheet = $excel->{Worksheet}->[0];
print "<table border='1'>\n";
foreach my $row ($sheet->{MinRow} .. $sheet->{MaxRow}) {
print "<tr>\n";
foreach my $col ($sheet->{MinCol} .. $sheet->{MaxCol}) {
print '<td>', $sheet->{Cells}[$row][$col]->{Val}, "</td>\n";
}
print "</tr>\n";
}
print '</table>';
Optional wird der HTML-Code in der Zwischenablage gespeichert und kann dadurch einfach eingefügt werden.
Interessant. Stehen die Daten durch die bloße Zuweisung an Win32::Clipboard in der Zwischenablage zur Verfügung?
Siechfred
Problem:
Grundsätzlich weiß ich wie es laufen muss, jedoch weiß ich nicht wie ich es am besten umsetzen soll. Hat jmd. da schon Erfahrungen gesammelt? Könnte mir jmd. einen Tipp geben, wie ich dies umsetzten kann?
Machs wie RoRo vorschlaegt oder speichere das Excel-Sheet als CSV-Datei und bearbeite es ganz ohne Excel-Module. Perl waere eine gute Wahl, PHP ebenso.
Ludger,
Dein Alias erinnert mich an einen alten DDR-Witz:
F: Was ist der Unterschied zwischen Chef und Sekretärin?
A: Der Chef fährt einen Schiguli und die Sekretärin hat eine schicke Lully [leiiiiiiider kein Link verfügbar!!]
;-)
SCNR, roro
A: Der Chef fährt einen Schiguli und die Sekretärin hat eine schicke Lully [leiiiiiiider kein Link verfügbar!!]
Der Ost-Humor war ja immer schon leegeedaeaer. Frei nach Humphrey Bogart - Ich haette nie "Lude" auf "Lully" umsteiegn sollen.