use Spreadsheet::ParseExcel::Simple; my $xls = Spreadsheet::ParseExcel::Simple->read('excel.xls'); foreach my $sheet ($xls->sheets) { #unmerge unmerge($sheet->{sheet}); while ($sheet->has_data) { my @data = $sheet->next_row; print join("\t", @data),"\n"; } } sub unmerge{ my($oWkS) =@_; print "--------- SHEETNAME:", $oWkS->{Name}, "\n"; my $range = $oWkS->get_merged_areas(); for (@$range){ print " start row : $_->[0] start col : $_->[1] end row : $_->[2] end col : $_->[3] \n\n"; $oWkC = $oWkS->{Cells}[$_->[0]][$_->[1]]; for my $iR ($_->[0] .. $_->[2]){ for my $iC ($_->[1] .. $_->[3]){ next if ($iR eq $_->[0] && $iC eq $_->[1]); print "SET [$iR][$iC] <= [$_->[0]][$_->[1]]\n"; $oWkS->{Cells}[$iR][$iC]->{_Value} = $oWkC->Value; } } } print "--------- DONE Unmerging.\n"; }