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
}
}
}
}