我是Perl编程的新手。我们假设我们在Excel工作簿的工作表A
中有2列。
AB Volume
100 280
137 250
150 375
100 100
100 600
137 200
现在,我希望输出在另一张表中。让我们说B
。我想根据Volume
总结AB
。
输出应该是:
AB Volume
100 980
137 450
150 375
请帮助我实现这一目标。
这是我为此编写的代码
#!/usr/bin/perl -w
use strict;
use Spreadsheet::Read;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::Worksheet;
use Excel::Writer::XLSX;
my $workbook = ReadData ("Book1.xlsx");
my $worksheet = $workbook->[1];
my $max_rows = $worksheet->{'maxrow'};
my $max_cols = $worksheet->{'maxcol'};
my $C1;
my $total = 0;
my $sum;
my $workbook_new = Excel::Writer::XLSX->new('New.xlsx');
my $worksheet2 = $workbook_new->add_worksheet();
for my $row_num (1..($max_rows))
{
if ($row_num>1)
{
my $temp1 = 'A'.$row_num;
$C1 = $workbook->[1]{$temp1};
for $row_num (1..($max_rows))
{
if ($row_num>1)
{
my $D1 = 'A'.$row_num;
my $D2 = $workbook->[1]{$D1};
if ($C1 = $D2)
{
my $Z2 = 'B'.$row_num;
$sum = $workbook->[1]{$Z2};
$total= $sum + $total;
}
}
}
print "value of C :".$C1 "SUM :".$total."\n";
}
}
我没有得到正确的输出,也无法弄清楚如何将输出写入Excel文件New.xlsx。
答案 0 :(得分:1)
首先使用Spreadsheet::ParseExcel和Spreadsheet::WriteExcel(再次将结果导入Excel文件)。
逐行,将值添加到哈希值;这样的事情可以解决问题:
for (2 .. $worksheet->row_range()) {
$total{ $worksheet->get_cell($_, 1) } += $worksheet->get_cell($_, 2);
}
这意味着最后您的哈希%total
应该包含您正在寻找的结果:
{
100 => 980,
137 => 450,
150 => 375
}
您只需要填写文件的解析和写入。