in reply to Testing for Chinese Characters

Here's a command-line script I posted a long time ago: xls2tsv -- it's so old it still uses Spreadsheet::ParseExcel (i.e. it assumes the old "xls" format rather than "xlsx"), but apparently, you are already using a module that handles your particular Excel spreadsheets, so the basic point that is relevant here is:
my $xl = Spreadsheet::ParseExcel->new; # or whatever module/version w +orks 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 a +re not Chinese } } } }