in reply to Re^4: Excel and Perl
in thread Excel and Perl

Spreadsheet::Read reads whole spreadsheets in a single hash of lists (sheets) of lists (columns) of lists (rows), including meta-information my $ss = ReadData ("file.xls"); using Spreadsheet::ParseExcel (or any other supported spreadsheet parser).

The first sheet is my $sheet = $ss->[1];.

The formatted value of cell B3 can be accessed by $sheet->{"B3"}. The unformatted value by $sheet->{cell}[2][3].

Does that help?


Enjoy, Have FUN! H.Merijn

Replies are listed 'Best First'.
Re^6: Excel and Perl
by kb (Initiate) on Jun 09, 2011 at 14:17 UTC
    I was a given the following code that was to help with the data crunching.
    my %vals; while (<DATA>){ chomp; my ($key, $val) = split; push @{$vals{$key}}, $val; } for my $key (sort {$a <=> $b} keys %vals) { my $max = max @{$vals{$key}}; print "$key $max\n"; } I figured that , since my hint for a successful functioning of the cod +e included parsing of excel using Spreadsheet::ParseExcel, I went ahe +ad and added the code to the parsing one as such: <code> #!/usr/bin/perl -w use strict; use warnings; use Spreadsheet::ParseExcel; use List::Util qw(max); my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->parse('4_19_10_Zrc01a-2.xls'); if ( !defined $workbook ) { die $parser->error(), ".\n"; } for my $worksheet ( $workbook->worksheets() ) { my ( $row_min, $row_max ) = $worksheet->row_range(); my ( $col_min, $col_max ) = $worksheet->col_range(); for my $row ( $row_min .. $row_max ) { for my $col ( $col_min .. $col_max ) { my $cell = $worksheet->get_cell( $row, $col ); next unless $cell; my %vals; while (<$col eq 5 and $col eq 8>){ chomp; my ($key, $val) = split; push @{$vals{$key}}, $val; } for my $key (sort {$a <=> $b} keys %vals) { my $max = max @{$vals{$key}}; print "$key $max\n"; } + } } }
    I changed the required DATA to the columns that I was specifically interested, which is that of column 5 and 8. For some reason, I have a big time error list when I run it. I must be missing something here. Any help would be appreciated. Thank you.