.XLSX в .CSV в Perl - PullRequest
       9

.XLSX в .CSV в Perl

0 голосов
/ 29 августа 2018

У меня есть Perl-скрипт, который содержит ниже

use strict;
use Spreadsheet::ParseExcel;

my $inputFile    = shift;
my $outputFile    = shift;

if(!-e $inputFile || !$outputFile) {
    print qq~
Usage: excelToTabDelim inputFile outputFile
    Parses an excel input file into a tab delimited out file
~;
    exit 1;
}

if(open(OUT, "> $outputFile")) {
    my $workbook = Spreadsheet::ParseExcel::Workbook->Parse($inputFile);
    foreach my $worksheet (@{$workbook->{Worksheet}}) { # looping through worksheets
        for(my $row = $worksheet->{MinRow}; defined $worksheet->{MaxRow} && $row <= $worksheet->{MaxRow}; $row++) { # loop through rows
            my @line;
            for(my $column = $worksheet->{MinCol}; defined $worksheet->{MaxCol} && $column <= $worksheet->{MaxCol}; $column++) { # loop through columns
                my $value = $worksheet->{Cells}[$row][$column] ? $worksheet->{Cells}[$row][$column]->Value : "";
                $value =~ s/^\s+//;
                $value =~ s/\s+$//;
                $value =~ s/[\r\n]+//g;
                $value = " " if $value ne "0" && !$value;
                push(@line, $value);
            }
            $" = "\t";
            print OUT "@line\n";
        }
    }
    close(OUT);
}
else {
    print "Error: Could not write to output file '$outputFile'\n";
}

Скрипт преобразует файл .xlsx в файл .csv. Проблема, с которой я сталкиваюсь, заключается в том, что при запуске сценария формируемый файл output.csv равен нулю. Может кто-нибудь сказать мне, что не так с кодом?

Ниже приведен пример файла Excel введите описание изображения здесь

...