首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电子表格::PERL查询中的ParseExcel

电子表格::PERL查询中的ParseExcel
EN

Stack Overflow用户
提问于 2014-11-05 06:29:09
回答 1查看 1.8K关注 0票数 1

我正在编写PERL代码,以便从特定excel表的特定行中选择值。为此,我使用电子表格::ParseExcel模块。到目前为止,我已经编写了这段代码

使用电子表格::ParseExcel::FmtDefault;使用电子表格::ParseExcel;我的$parser =电子表格::ParseExcel->new();#my $name =;die“您必须为$0提供一个文件名才能被解析为Excel文件”,除非@ARGV;my $workbook =$解析器->解析($ARGV);my @value;if (定义$workbook ){ die $解析器->error(),".\n";}对于我的$worksheet ( $workbook->worksheets() ){ my ( $row_min,$row_max )= $worksheet->row_range();my ( $col_min,$col_max )= $worksheet->col_range();用于$row ( $row_min )。$row_max ){ for my $col ( $col_min .( $col_max ){ my $cell = $worksheet->get_cell( $row,$col );下一步除非$cell;$cell->value();my $cell_type = $cell->{Type};if ($cell_type =/Numeric/){ push @值,$$col->未格式化();}}}

我能够用这个特定的代码在一个特定的excel表中选择所有的数值,但是我想调整代码,以便它能够根据用户的需要(例如:B行或C行中的所有数值)在特定的列中获取数值。我如何调整我的代码使之成为可能,或者有更简单的模块,可以在其中指定范围(例如B2 - B22)。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-05 08:44:09

请检查下面的perl代码。Excel工作表行和列值以(0,0)开头。因此,请重新输入列号和行号,以获得所需的输出。

代码:

代码语言:javascript
复制
use strict;
use warnings;
use Spreadsheet::ParseXLSX;

my $parser   = Spreadsheet::ParseXLSX->new();
my $workbook = $parser->parse('C:\Users\Perl\test1.xls');

if ( !defined $workbook ) {
 die $parser->error(), ".\n";
     }
my $worksheet = $workbook->worksheet(0);
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();

COLUMNS: print "Select the column number required from Excel\n";
my $column = <STDIN>;
chomp($column);
unless ($column =~/[0-9]+/){
print "Bummer!! Please Enter a number\n";
goto COLUMNS;
}

if($column gt $col_max){
     print "No such columns defined in the Excel";
     goto END;
      }

ROWS:print "Select number of rows required from column $column:\n";
my $rows = <STDIN>;
chomp($rows);
my $count = $rows+1;
unless ($rows =~/[0-9]+/){
print "Bummer!! Please Enter a number\n";
goto ROWS;
}

  ROW_LABEL: if($rows le $row_max)
    {  
    print "\nThe $count row values from column $column are:\n"; 
    for my $row ( $row_min .. $rows ) {

        my $cell = $worksheet->get_cell( $row, $column );
        next unless $cell;
        my $result = $cell->value();        
        print $result . "\n";
          }
       }
    else
     {   
      $rows = $row_max;
      goto ROW_LABEL ;
         }       
 END:
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26750998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档