Cant' call Method 'AddCell'

Ich habe folgendes Problem mit einem Perl Script. Und zwar habe ich mir die Library ParseExcel::SafeParser geladen. Ziel ist es Daten aus einer Excel Tabelle in eine andere bereits vorformatierte Excel Tabelle zu kopiern.

Hatte vor mit Perl eine Formatierung zu erzeugen, dann die gewünschten Daten auszulesen und in eine Excel Tabelle zu kopieren. (Für bessere Vorschläge mein Problem zu lösen bin ich übrigens offen)

Quelltext:

use strict;
 use Spreadsheet::stuck\_out\_tongue:arseExcel::SaveParser;
 my $oExcel = new Spreadsheet::stuck\_out\_tongue:arseExcel::SaveParser;
 my $oBook = $oExcel-&gt:stuck\_out\_tongue\_winking\_eye:arse('temp.xls');
 #1.1.Update and Insert Cells
 my $iFmt = $oBook-\>{Worksheet}[0]-\>{Cells}[0][0]-\>{FormatNo};
 $oBook-\>AddCell(0, 0, 0, 'No(UPD)',
 $oBook-\>{Worksheet}[0]-\>{Cells}[0][0]-\>{FormatNo});
 $oBook-\>AddCell(0, 1, 0, '304', $oBook-\>{Worksheet}[0]-\>{Cells}[0][0]);
 $oBook-\>AddCell(0, 1, 1, 'Kawai,Takanori', $iFmt);
 #1.2.add new worksheet
 my $iWkN = $oBook-\>AddWorksheet('Test');
 #1.3 Save
 $oExcel-\>SaveAs($oBook, 'temp.xls'); # as the same name

Hab diesen rein zum probieren aus einem Forum übernommen und er lief auch. Als ich allerdingsam nächsten Tag versucht hab das Script erneut zum laufen zu bekommen, bekam ich folgende Fehlermeldung

„Can’t call Method „AddCell“ on unblessed reference at C:/Script.pl line 8“

Kann mir da vllt jemand weiterhelfen wie ich den Fehler begeben und weiterarbeiten kann?

_[MOD]:

-Tags hinzugefügt, bitte in Zukunft selbst machen_ 

Hallo

Quelltext:
use strict;

my $oBook = $oExcel-&gt:stuck_out_tongue_winking_eye:arse(‚temp.xls‘);
#1.1.Update and Insert Cells
my $iFmt = $oBook->{Worksheet}[0]->{Cells}[0][0]->{FormatNo};
$oBook->AddCell(0, 0, 0, ‚No(UPD)‘, $oBook->{Worksheet}[0]->{Cells}[0][0]->{FormatNo});

Hab diesen rein zum probieren aus einem Forum übernommen und
er lief auch. Als ich allerdingsam nächsten Tag versucht hab
das Script erneut zum laufen zu bekommen, bekam ich folgende
Fehlermeldung

„Can’t call Method „AddCell“ on unblessed reference at
C:/Script.pl line 8“

Das bedeutet, daß die Initialisierung von $oBook
(ganz oben) zu einer Klasse nicht geklappt hat.
Vielleicht ist die Datei ‚temp.xls‘ nicht mehr da?

Kann mir da vllt jemand weiterhelfen wie ich den Fehler
begeben und weiterarbeiten kann?

Wie groß ist denn die Datei temp.xls? Vielleicht
hast Du sie versehentlich „getruncatet“?

Grüße

CMБ

Die Datei Temp.xls ist noch vorhanden und auch am relativen Pfad wo das Perl Script ausgeführt wird.

Ich habs allerdings grad mit genauen Pfaden ausprobiert, und es funktioniert. Ist natürlich lästig nicht mit realtiven Pfaden arbeiten zu können, vorallem da diese ja vorher ohne funktioniert haben…

Aber sehen wir das Problem mal als gelöst an, Danke trotzedm.

Hallo

Ich bin nicht sicher, aber wo er doch von „unblessed“ redet, könnte dir ja mit der „bless“ geholfen sein, die macht ja Objekte:
http://perldoc.perl.org/functions/bless.html

my $oBook = bless $oExcel-&gt:stuck\_out\_tongue\_winking\_eye:arse('temp.xls');

oder ähnlich.

lG
Martin B

Hallo,

Ich bin nicht sicher, aber wo er doch von „unblessed“ redet,
könnte dir ja mit der „bless“ geholfen sein, die macht ja
Objekte:
http://perldoc.perl.org/functions/bless.html

my $oBook = bless $oExcel-&gt:stuck_out_tongue_winking_eye:arse(‚temp.xls‘);

oder ähnlich.

Ich befürchte, dass du da auf dem Holzweg bist. Das würde das, was Parse zurückgegeben hat, in ein Objekt des Namespaces verwandeln, in dem dieser Code steht (wenn kein „package Irgendwas;“ davor steht also „main“).

Wenn Parse() kein Objekt zurückliefert, dann weil ein Fehler aufgetreten ist. Das zu kaschieren durch ein bless von aussen macht die Sache vermutlich eher verwirrender als besser.

Grüße,
Moritz