Я пишу код для анализа информации о продажах для автоматически сгенерированного отчета Excel. Я могу получить данные из каждой ячейки для строки и распечатать его в текстовом файле. Проблема начинается, когда я пытаюсь зациклить чтение строк. Электронная таблица настроена с данными о каждой другой ячейке. Я попытался создать цикл for для увеличения ячеек, но получил ошибку.
syntax error at C:\taylor\perl\test_parse.pl line 128, near ")
my "
Global symbol "$value" requires explicit package name (did you forget to declare "my $value"?) at C:\taylor\perl\test_parse.pl line 128.
Global symbol "$value" requires explicit package name (did you forget to declare "my $value"?) at C:\taylor\perl\test_parse.pl line 129.
Global symbol "$value" requires explicit package name (did you forget to declare "my $value"?) at C:\taylor\perl\test_parse.pl line 168.
Execution of C:\taylor\perl\test_parse.pl aborted due to compilation errors."
Я пытался переместить переменные из области действия блока if, но не уверен, возможно ли это.
#!/usr/bin/perl
use warnings;
use strict;
use Spreadsheet::ParseXLSX;
use Spreadsheet::ParseExcel;
use Spreadsheet::XLSX;
use Date::Format;
my $filename = "c:/taylor/perl/DCS8.xlsx";
my $files = "C:\\Taylor\\perl\\imports.csv";
#Parse excel file
my $parser = Spreadsheet::ParseXLSX->new();
my $workbook = $parser->parse("$filename");
for (my $i=0; $i <= 200; $i+=2) {
my $worksheet1 = $workbook->worksheet('Sheet1');
my $a = $worksheet1->get_cell(15+$i,0);
my $d = $worksheet1->get_cell(15+$i,3);
my $f = $worksheet1->get_cell(15+$i,5);
my $h = $worksheet1->get_cell(15+$i,7);
my $j = $worksheet1->get_cell(15+$i,9);
my $l = $worksheet1->get_cell(15+$i,11);
my $n = $worksheet1->get_cell(15+$i,13);
my $p = $worksheet1->get_cell(15+$i,15);
my $r = $worksheet1->get_cell(15+$i,17);
my $t = $worksheet1->get_cell(15+$i,19);
my $v = $worksheet1->get_cell(15+$i,21);
my $x = $worksheet1->get_cell(15+$i,23);
my $z = $worksheet1->get_cell(15+$i,25);
my $ab = $worksheet1->get_cell(15+$i,27);
my $af = $worksheet1->get_cell(15+$i,29);
my $ah = $worksheet1->get_cell(15+$i,31);
my $aj = $worksheet1->get_cell(15+$i,33);
my $ao = $worksheet1->get_cell(15+$i,35);
if (( defined $a and $a->value() ne "")
or ( defined $d and $d->value() ne "")
or ( defined $f and $f->value() ne "")
or ( defined $h and $h->value() ne "")
or ( defined $j and $j->value() ne "")
or ( defined $l and $l->value() ne "")
or ( defined $n and $n->value() ne "")
or ( defined $p and $p->value() ne "")
or ( defined $r and $r->value() ne "")
or ( defined $t and $t->value() ne "")
or ( defined $v and $v->value() ne "")
or ( defined $x and $x->value() ne "")
or ( defined $z and $z->value() ne "")
or ( defined $ab and $ab->value() ne "")
or ( defined $af and $af->value() ne "")
or ( defined $ah and $ah->value() ne "")
or ( defined $aj and $aj->value() ne "")
or ( defined $ao and $ao->value() ne ""))
my $value = $a->value();
$value =~ s/[_, -]//g;
my $value2 = $d->value();
$value2 =~ s/[_, -]//g;
my $value3 = $f->value();
$value3 =~ s/[_, -]//g;
my $value4 = $h->value();
$value4 =~ s/[_, -]//g;
my $value5 = $j->value();
$value5 =~ s/[_, -]//g;
my $value6 = $l->value();
$value6 =~ s/[_, -]//g;
my $value7 = $n->value();
$value7 =~ s/[^a-zA-Z0-9,]//g;
my $value8 = $p->value();
$value8 =~ s/[_, -]//g;
my $value9 = $r->value();
$value9 =~ s/[_, -]//g;
my $value10 = $t->value();
$value10 =~ s/[_, -]//g;
my $value11 = $v->value();
$value11 =~ s/[_, -]//g;
my $value12 = $x->value();
$value12 =~ s/[_, -]//g;
my $value13 = $z->value();
$value13 =~ s/[_, -]//g;
my $value14 = $ab->value();
$value14 =~ s/[_, -]//g;
my $value15 = $af->value();
$value15 =~ s/[_, -]//g;
my $value16 = $ah->value();
$value16 =~ s/[^a-zA-Z0-9,]//g;
my $value17 = $aj->value();
$value17 =~ s/[^a-zA-Z0-9,]//g;
my $value18 = $ao->value();
$value18 =~ s/[^a-zA-Z0-9,]//g;
my $files = "C:\\Taylor\\perl\\imports.csv";
unlink ($files);
open (OUTFILE, ">>$files");
print OUTFILE "$value,$value2,$value3,$value4,$value5,$value6,$value7,$value8,$value9,$value10,$value11,$value12,$value13,$value14,$value15,$value16,$value17,$value18\n";
}
В идеале это будет циклически проходить через ячейки get, добавляя 2 строки каждый раз, вместо этого кажется, что когда цикл начинается, он прерывается.