解析Excel工作表时如何按列查找行数

时间:2019-06-27 05:25:59

标签: perl

我有一个Excel工作表,其中有两列。第1列有5行,第2列有2行。

Column 1   Column 2

Alpha      One
Beta       Two
Charlie
Gamma
Zeta

如何获取第1列和第2列中的最大行数。

我有以下代码来获取工作表中的最大行数。

#!/usr/bin/perl -w
use strict;
use Spreadsheet::ParseExcel;

my $FILE = "<excel file name>.xls";
my $SHEETNAME = "<sheet name>";

my $COLUMN1 = 1;
my $COLUMN2 = 2;

my $excel = Spreadsheet::ParseExcel::Workbook->Parse($FILE);
my $sheet = $excel->Worksheet($SHEETNAME);

$row_max = $sheet->{MaxRow};

1 个答案:

答案 0 :(得分:2)

可能不是最好的解决方案,但它可行:

my $parser   = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse('<excel file name>.xls');

if ( !defined $workbook ) {
    die $parser->error(), ".\n";
}

for my $worksheet ( $workbook->worksheets() ) {
    my ( $row_min, $row_max ) = $worksheet->row_range();
    my $cells_col2 = 0;

    for my $row ($row_min..$row_max){
        if (!defined $worksheet->get_cell( $row, 1 )) { # 1 == col-2
            last;
        }
        $cells_col2++;
    }
    print $cells_col2; # 2
}

循环在找到此列中的第一个空单元格时停止