Thread WIN32::OLE Excel lesen, modifizieren und zurückschreiben (5 answers)
Opened by Henry07 at 2012-06-30 11:20

Henry07
 2012-06-30 11:20
#159484 #159484
User since
2007-11-07
48 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich verwende WIN32::OLE weil ich mit Spreadsheet::ParseExcel keine Formels auslesen kann.
Das geht mit WIN32::OLE sehr gut.

Lesen von einer Excel-Datei geht gut
Schreiben auf eine neu erzeugte Excel-worksheet geht auch.

Aber ich bekomme es einfach nicht hin die Zelldaten einer Datei.xls
die ich geöffnet habe und auslese zu modifizieren und wieder zurückzuschreiben.

Wie kann ich Zellen modifizieren und die Datei zurückschreiben.

Vielen Dank, Henry

Hier mein funktionierender Lese-Teil:

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
#!"C:\xampp\perl\bin\perl.exe"  -w

use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use strict;

use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';

$Win32::OLE::Warn = 3; # die on errors...

print "Content-type: text/html\n\n";

my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');

$Excel->{Visible} = 1; # ??

my $Book = $Excel->Workbooks->Open("datei1.xls"); # open Excel file
my $Sheet = $Book->Worksheets(1); # select worksheet number 1 (you can also select a worksheet by name)

foreach my $row (1..10){
foreach my $col (1..4) {
my $Val = $Sheet->Cells($row,$col)->{'Value'}; # shows value
my $Dis = $Sheet->Cells($row,$col)->{'Text'}; # shows formated value
my $Form = $Sheet->Cells($row,$col)->{'Formula'}; # shows formula
print "$row, $col, $Dis, $Val, $Form<br>\n";
}
print "<br>\n";
}

# hier soll irgendwas modifiziert werden

$Book->Close;
print "ready<br>\n";


Wie modifiziere ich die Zelldaten und reicht das Close zum zurückschreiben ?

View full thread WIN32::OLE Excel lesen, modifizieren und zurückschreiben