my $xl = Spreadsheet::ParseExcel->new; # or whatever module/version works my $wb = $xl->Parse( $filepath ) or die "$filepath: $!\n"; for my $sheet ( @{$wb->{Worksheet}} ) { $sheet->{MaxRow} ||= $sheet->{MinRow}; for my $row ( $sheet->{MinRow} .. $sheet->{MaxRow} ) { $sheet->{MaxCol} ||= $sheet->{MinCol}; for my $col ( $sheet->{MinCol} .. $sheet->{MaxCol} ) { my $cell = $sheet->{Cells}[$row][$col]; my $val = $cell->{Val}; if ( $cell->{Code} eq 'ucs2' ) { $val = decode( "UTF-16BE", $val ); if ( $val =~ /\p{Han}/ ) { # this cell contains Chinese characters } # NB: there may be non-ASCII Unicode characters that are not Chinese } } } }