Schrift
[thread]9181[/thread]

Problem mit Spreadsheet::SimpleExcel

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Crian
 2007-07-12 15:07
#78404 #78404
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Ich hab folgendes Testprogramm (aus der Synopsis):

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
#!/usr/bin/perl
use strict;
use warnings;


use FindBin;
use lib $FindBin::RealBin . "/modules";

use Spreadsheet::SimpleExcel;

binmode(\*STDOUT);

# data for spreadsheet
my @header = qw(Header1 Header2);
my @data = (['Row1Col1', 'Row1Col2'],
['Row2Col1', 'Row2Col2']);

# create a new instance
my $excel = Spreadsheet::SimpleExcel->new();

# add worksheets
$excel->add_worksheet('Name of Worksheet',{-headers => \@header, -data => \@data});
$excel->add_worksheet('Second Worksheet',{-data => \@data});
$excel->add_worksheet('Test');

# add a row into the middle
$excel->add_row_at('Name of Worksheet',1,[qw/new row/]);

# sort data of worksheet - ASC or DESC
$excel->sort_data('Name of Worksheet',0,'DESC');

# remove a worksheet
$excel->del_worksheet('Test');

# sort worksheets
$excel->sort_worksheets('DESC');

# create the spreadsheet
$excel->output();

# print sheet-names
print join(", ",$excel->sheets()),"\n";

# get the result as a string
my $spreadsheet = $excel->output_as_string();

# print result into a file and handle error
$excel->output_to_file("my_excel.xls") or die $excel->errstr();
$excel->output_to_file("my_excel2.xls",45000) or die $excel->errstr();


und ich bekomme die Fehlermeldung

Quote
Can't use string ("Name of Worksheet") as an ARRAY ref while "strict refs" in use at .../modules/Spreadsheet/SimpleExcel.pm line 343.


Mmmh? Name of Worksheet taucht einmal bei $excel->add_worksheet und einmal bei $excel->add_row_at auf. Mmmh.

Renee, liest du zufällig gerade hier?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2007-07-12 22:16
#78405 #78405
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich schaue es mir morgen mal an...

Welche Version von CPAN:Spreadsheet::SimpleExcel hast Du??
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GoodFella
 2007-07-13 08:51
#78406 #78406
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Vielleicht erwartet er bei
Code: (dl )
$excel->add_row_at('Name of Worksheet',1,[qw/new row/]);

die Übergabe einer Referenz auf ein Array anstatt das Array selbst?
hab jetzt keine zeit zum testen, muss gleich zur uni :)
..Ausserdem hatte ich die Fehlermeldung mal bei Übergabe eines Schriftartnamens, der Leerzeichen enthielt, glaube aber, dass ist hier nicht so.\n\n

<!--EDIT|GoodFella|1184302410-->
Crian
 2007-07-13 11:11
#78407 #78407
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
[quote=renee,12.07.2007, 20:16]Ich schaue es mir morgen mal an...

Welche Version von CPAN:Spreadsheet::SimpleExcel hast Du??[/quote]
Danke, die Version von CPAN, 1.6.

@Goodfella: [...] ist eine Referenz...\n\n

<!--EDIT|Crian|1184310754-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2007-07-13 12:44
#78408 #78408
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Fehler entdeckt. Danke für den Hinweis. Version 1.7 wird in ein paar Stunden beim CPAN-Dealer Deiner Wahl sein...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2007-07-13 12:48
#78409 #78409
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Der Fehler entspringt in der Funktion _is_numeric:

Code: (dl )
1
2
3
4
5
6
7
sub _is_numeric{
my ($arref,$index) = @_;
foreach(@$arref){
return 0 if($_->[$index] =~ /[^\d\.]/); # Zeile 343
}
return 1;
}# end _is_numeric


Ich hab das ganze mit

Code: (dl )
1
2
3
4
5
6
7
8
9
sub _is_numeric{
my ($arref,$index) = @_;
foreach(@$arref){
no strict 'refs';
return 0 if($_->[$index] =~ /[^\d\.]/);
use strict 'refs';
}
return 1;
}# end _is_numeric


Versucht zu retten, aber dann bekomme ich einen Haufen Fehlermeldungen und die erzeugte Exceldatei zeigt nur Datenmüll an.

Meldungen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
Use of uninitialized value in array element at .../prg/modules/Spreadsheet/SimpleExcel.pm line 351.
Use of uninitialized value in pattern match (m//) at .../prg/modules/Spreadsheet/SimpleExcel.pm line 351.

Use of uninitialized value in array element at .../prg/modules/Spreadsheet/SimpleExcel.pm line 351.
Use of uninitialized value in pattern match (m//) at .../prg/modules/Spreadsheet/SimpleExcel.pm line 351.

Argument "Second Worksheet" isn't numeric in numeric comparison (<=>) at .../prg/modules/Spreadsheet/Simp
leExcel.pm line 331.
Argument "Name of Worksheet" isn't numeric in numeric comparison (<=>) at .../prg/modules/Spreadsheet/Sim
pleExcel.pm line 331.


Wenn du möchtest, kann ich dir das Programm und die verwendeten Module zusammenzippen und schicken.


Edit:

[quote=renee,13.07.2007, 10:44]Fehler entdeckt. Danke für den Hinweis. Version 1.7 wird in ein paar Stunden beim CPAN-Dealer Deiner Wahl sein...[/quote]
Ah super, besten Dank.\n\n

<!--EDIT|Crian|1184316602-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2007-07-13 15:58
#78410 #78410
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Jetzt geht es, wunderbar!

Jetzt hab ich noch eine Feature-Frage. Ich habe gesehen, ich kann Formate für den Header- und Databereich angeben, schön wäre es, wenn ich die einzelnen Spalten formatieren kann (Numerisch oder Alphanumerisch).

Und optional wäre es noch traumhaft, für Zeilen die Farbe und Höhe einstellen zu können.

Aber vermutlich geht das beides nur mit Spreadsheet::WriteExcel, oder?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2007-07-13 18:00
#78411 #78411
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich lasse mir was einfallen, aber heute bekomme ich das nicht mehr hin...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2007-07-13 18:37
#78412 #78412
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Ne klar *lächelt*
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
GoodFella
 2007-07-14 03:52
#78413 #78413
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Crian: Ich hab ein riesiges Programm rund um Spreadsheet::WriteExcel geschrieben, dass fast die ganze Funktionialität abdeckt, ich könnte es dir schicken, wenn Interesse besteht.
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-07-12 15:07.