我刚刚开始在Perl编译代码, 并想知道下面的代码是否能更有效率, 或者可以用更少的线条完成。
我对
这个问题基本上是一个新问题,问一个老人:“嘿,我如何成为更好的珀尔探长?”
代码的目的是从Excel工作手册中特定页目中指定的范围内获取数据,并将这些范围内的内容写成CSV文件。
此外,我知道我需要执行一般检查,比如在将我的 < code>$cellValue 添加到阵列和这样的阵列之前要先确定它的定义,但我正在寻找更多的整体结构。 比如有办法将整个行同时放入一个阵列,或者将整个阵列放入一个阵列,或者在一个阵列或引用中,或者这种性质的东西,从而平整环形吗?
谢谢 谢谢
use strict;
use warnings;
use Spreadsheet::XLSX;
my $excel = Spreadsheet::XLSX -> new ( C:scott.xlsm ,);
my @sheets = qw(Fund_Data GL_Data);
foreach my $sheet (@sheets) {
my $worksheet = $excel->Worksheet($sheet);
my $cell = $worksheet->get_cell(25,0);
if ($cell) { # make sure cell value isn t blank
my $myFile = "C:/$sheet.csv";
open NEWFILE, ">$myFile" or die $!;
# write all cells from Range("A25:[MaxColumn][MaxRow]") to a csv file
my $maxCol = $worksheet->{MaxCol};
my $maxRow = $worksheet->{MaxRow};
my @arrRows;
my $rowString;
# loop through each row and column in defined range and string together each row and write to file
foreach my $row (24 .. $maxRow) {
foreach my $col (0 .. $maxCol) {
my $cellValue = $worksheet->{Cells} [$row] [$col]->Value();
if ($rowString) {
$rowString = $rowString . "," . $cellValue;
} else {
$rowString = $cellValue;
}
}
print NEWFILE "$rowString
";
undef $rowString;
}
}
}