Не удается получить row_range в Perl-скрипте - PullRequest
0 голосов
/ 12 апреля 2019

Кажется, мой код не получает row_range ().Он показывает ошибку, которая:

Не удается найти метод объекта "row_range" через пакет "Spreadsheet :: ParseExcel :: Worksheet" в строке зажима_init_value.pl 41.

 #!/usr/bin/perl

 use strict;
 use warnings;
 use Spreadsheet::ParseExcel;

 my $filename = '../../doc/Book1.xls';
 my $parser   = Spreadsheet::ParseExcel->new();
 my $workbook = $parser -> Parse( $filename);

 if ( !defined $workbook ) {
    die "-E-: cannot parse <$filename>.\n";
 }

 for my $worksheet ( $workbook-> Worksheet( 'family pin list' ) ) {

    # Find out the worksheet ranges
    my ( $row_min, $row_max ) = $worksheet->row_range();
    my ( $col_min, $col_max ) = $worksheet->col_range();

    for my $row ( $row_min .. $row_max ) {
        for my $col ( $col_min .. $col_max ) {

            # Return the cell object at $row and $col
            my $cell = $worksheet->get_cell( $row, $col );
            next unless $cell;

            print "Row, Col    = ($row, $col)\n";
            print "Value       = ", $cell->value(),       "\n";

        }
    }
}

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019

Чтобы немного расширить ответ от TFBW ...

Файл Changes для этого модуля содержит следующую запись:

0.43 January 7 2009

    + Restructured and rewrote the main documentation. This is the start of
      a general refactoring. If you would like to keep up to date with it
      keep an eye on the Spreadsheet::ParseExcel Google Group.
      http://groups.google.com/group/spreadsheet-parseexcel

    + Added worksheets() Workbook method to iterate over the Worksheet objects.

    + Added unformatted() method to get a Cell's unformatted value.

    + Renamed public methods RowRange(), ColRange() and Cell() to row_range(),
      col_range() and get_cell(). Old methods are still available.

    ! Turned on compatibility_mode() by default in SaveParser to avoid SP3
      problems.

    ! Fixed minor SaveParser bug with font rotation.
      http://rt.cpan.org/Public/Bug/Display.html?id=41626

Итак, если у вас версия модуля старше версии 0.43, то нужный метод называется RowRange().Вы можете найти версию установленного вами модуля, набрав его в командной строке:

perl -MSpreadsheet::ParseExcel -le'print $Spreadsheet::ParseExcel::VERSION'

Если у вас есть версия модуля старше десяти лет, тогда я настоятельно рекомендуюобновляя его.

1 голос
/ 12 апреля 2019

Какая версия Spreadsheet :: ParseExcel :: Worksheet это? Эти методы раньше назывались RowRange () ColRange () и Cell (). Смотри https://metacpan.org/changes/distribution/Spreadsheet-ParseExcel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...