my @columns; # this is your result. # each element will be an array(ref) of cell values. for(my $iC = $oWkS->{MinCol}; defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol}; $iC++ ) { for(my $iR = $oWkS->{MinRow}; defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow}; $iR++ ) { my $oWkC = $oWkS->{Cells}[$iR][$iC]; $columns[$iC][$iR] = $oWkC ? $oWkC->Value : undef; } }