繁体   English   中英

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

[英]Using a Perl script how to sum values in one column based on another column in Excel?

我是 Perl 编程的新手。 假设我们在 Excel 工作簿的工作表A中有 2 列。

AB      Volume
100     280
137     250
150     375
100     100
100     600
137     200

现在,我想在另一张纸中输出。 假设B 我想根据AB总结Volume

输出应该是这样的:

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。

首先使用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
    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM