使用Perl脚本如何根据Excel中的另一列对一列中的值求和?

时间:2016-03-30 10:01:51

标签: excel perl

我是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。

1 个答案:

答案 0 :(得分:1)

首先使用Spreadsheet::ParseExcelSpreadsheet::WriteExcel(再次将结果导入Excel文件)。

逐行,将值添加到哈希值;这样的事情可以解决问题:

    for (2 .. $worksheet->row_range()) {
      $total{ $worksheet->get_cell($_, 1) } += $worksheet->get_cell($_, 2);
    }

这意味着最后您的哈希%total应该包含您正在寻找的结果:

    {
      100 => 980,
      137 => 450,
      150 => 375
    }

您只需要填写文件的解析和写入。