use strict;
use Spreadsheet::ParseExcel;
use Data::Dumper;
use warnings;
my $s_name;
my $s_name2;
my $attribute2;
my $attribute;
my $parser=Spreadsheet::ParseExcel->new();
my $workbook=$parser->parse('C:\Perl\perl_tests\Sample.xls');
if(!defined $workbook)
{
die $parser->error(),".\n";
}
my $worksheet=$workbook->worksheet('Sheet1');
my %student_name;
for my $row(1..$worksheet->row_range)
{
my $super_key=$worksheet->get_cell($row,0)->value;
for my $col(0..4)
{
my $key=$worksheet->get_cell(0,$col)->value;
my $cell=$worksheet->get_cell($row,$col);
next unless $cell;
my $value=$cell->value();
$student_name{$super_key}->{$key}=$value;
}
}
foreach $s_name(sort keys %student_name)
{
foreach $attribute (keys%{$student_name{$s_name}})
{
if($student_name{$s_name}{$attribute} eq "x")
{
print("$s_name-->$attribute\n");
}
}
print("\n");
}
my %p_name;
for my $row(1..$worksheet->row_range)
{
my $super_key2=$worksheet->get_cell($row,6)->value;
for my $col(6..10)
{
my $key2=$worksheet->get_cell(0,$col)->value;
my $cell2=$worksheet->get_cell($row,$col);
next unless $cell2;
my $value2=$cell2->value();
$p_name{$super_key2}->{$key2}=$value2;
}
}
foreach $s_name2(sort keys %p_name)
{
foreach $attribute2 (keys%{$p_name{$s_name2}})
{
if($p_name{$s_name2}{$attribute2} eq "x")
{
print("$s_name2-->$attribute2\n");
}
}
print("\n");
}
####
EXCEL FILE 1 :
S.Name IQ Sports P.Name IQ sports
Vishal x x Mr. Jha x x
Jasen x x Mr. kumar x x
EXCEL FILE 2 :
S.Name IQ Sports P.Name IQ sports
Vishal x x Mr. Jha x x
Jasen x x Mr. kumar x x
Garry x x
####
ERROR :
can't call method "value" on an undefined value