Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5969[/thread]

Windows Excel

Leser: 4


<< >> 5 Einträge, 1 Seite
wolfgangk
 2003-12-15 15:27
#76033 #76033
User since
2003-11-03
11 Artikel
BenutzerIn
[default_avatar]
is es möglich, aus einer excel-datei dirket im Perl zu verarbeiten?
Bisher speichere ich die Excel-Datei als .TXT datei ab und lade sie in Perl

Wolfgang
havi
 2003-12-15 15:34
#76034 #76034
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Sorry das der Code nicht dokumentiert ist!

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/Perl

use warnings;
use strict;

sub su_Excel($);

my $XLS_Datei = "";
$XLS_Datei = "Exceldatei.xls";

my $Text_Datei = "";
$Text_Datei = su_Excel($XLS_Datei);

# hier hast du nun die Textdatei im Zugriff und kannst ganz normal weiterarbeiten

sub su_Excel($) {

my $XLS_Datei = shift;

my $ExcelTabelle;

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($XLS_Datei);
my $Sheet = $Book->Worksheets(1);

$Excel->ActiveCell->SpecialCells(xlLastCell)->Select;
my $Letzte_Zeile = $Excel->ActiveCell->Row;
my $Letzte_Spalte = $Excel->ActiveCell->Column;

my $Array = $Sheet->Range($Sheet->Cells(1,1),$Sheet->Cells($Letzte_Zeile,$Letzte_Spalte))->{'Value'};

$Book->Close;

my $Text_Datei = "Textdatei.txt";

open(TEXT, ">$Text_Datei") or die $!;

my $Zeile = "";
my $Feld = "";
foreach my $ref_Array (@$Array) {
$Zeile = "";
foreach my $ExcelTabelle (@$ref_Array) {
$Feld = $ExcelTabelle;
$Zeile .= $Feld."\t";
} # foreach
print TEXT $Zeile, "\n";
} # foreach

$Excel->Quit();

close(TEXT) or die $!;

$Text_Datei;

} # su_Excel


Viel Spass...

Gruss
wolfgangk
 2003-12-15 16:05
#76035 #76035
User since
2003-11-03
11 Artikel
BenutzerIn
[default_avatar]
Vielen Dank für die schnelle Hilfe.

Ich habe den Dateinamen auf test.xls geändert und die Excel-Datei ist im gleichen Verzeichnis wie das Script

ich erhalte folgende Fehlermeldung, was läuft falsch ?

OLE exception from "Microsoft Excel":
'test.xls' wurde nicht gefunden. &▄berpr³fen Sie die Rechtschreibung des
Dateinamens und ³berpr³fen sie, ob der Ort der Datei korrekt ist.

Wenn Sie versuchen, die Datei ³ber die Liste der zuletzt verwendeten
Dokumente im Men³ 'Datei' zu ÷ffnen, ³berpr³fen Sie dass die Datei nicht
umbenannt, verschoben oder gel÷scht wurde.

Win32::OLE(0.1601) error 0x800a03ec
in METHOD/PROPERTYGET "Open" at D:\webpages\cgi-bin\test.pl line 37
havi
 2003-12-15 16:08
#76036 #76036
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Beende mal alles Excel's (Taksmanager-Task beenden).
Danach aendere folgendes:
Code: (dl )
$XLS_Datei = "Exceldatei.xls";

in
Code: (dl )
$XLS_Datei = "D:\\webpages\\cgi-bin\\Exceldatei.xls";


Was passiert?

Gruss\n\n

<!--EDIT|havi|1071497322-->
havi
 2003-12-16 15:13
#76037 #76037
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
@wolfgangk: Hat es nun funktioniert?

Gruss
<< >> 5 Einträge, 1 Seite



View all threads created 2003-12-15 15:27.