use Spreadsheet::XLSX; use Win32::LongPath; use Win32; use utf8; my $path="Ршзефф\\faoü.xlsx"; #my $path="Ршзефф.xlsx"; #my $path="faoü.xlsx"; #my $MYPath = Win32::GetANSIPathName ($path); my $MYPath = shortpathL ($path); print "$MYPath \n\n"; my $excel = Spreadsheet::XLSX -> new ($MYPath); my $counter=0; foreach my $sheet (@{$excel -> {Worksheet}}) { if ($counter eq 0){#work only on first sheet now $sheet -> {MaxRow} ||= $sheet -> {MinRow}; foreach my $row ($sheet -> {MinRow} .. $sheet -> {MaxRow}) { $sheet -> {MaxCol} ||= $sheet -> {MinCol}; foreach my $col ($sheet -> {MinCol} .. $sheet -> {MaxCol}) { my $cell = $sheet -> {Cells} [$row] [$col]; if ($cell) { my $cell_value = ($cell -> {Val}); $cell_value =~ s/\n//g; print $cell_value; } print "\t"; } print "\n"; } $counter=1; } }