my $csv = Text::CSV_XS->new ({ binary => 1, eol => "\r\n", auto_diag => 1 }); open my $fh, ">", "file.csv" or die "file.csv: $!"; foreach my $row_index ($source_sheet->row_range) { my @row; foreach my $col_index ($source_sheet->col_range) { my $source_cell = $source_sheet->{Cells}[$row_index][$col_index]; my $value; if ($source_cell) { local $Text::Wrap::columns = 20; $value = wrap ("", "", $source_cell->Value); } push @row, $value; } $csv->print ($fh, \@row); } close $fh;