PERL查询中的电子表格::ParseExcel
我正在编写一个PERL代码,从特定excel工作表的特定行中选择值。为此,我正在使用电子表格::ParseExcel模块。到目前为止,我已经编写了这段代码PERL查询中的电子表格::ParseExcel,excel,perl,spreadsheet,parseexcel,Excel,Perl,Spreadsheet,Parseexcel,我正在编写一个PERL代码,从特定excel工作表的特定行中选择值。为此,我正在使用电子表格::ParseExcel模块。到目前为止,我已经编写了这段代码 我能够使用此特定代码选择特定excel工作表中的所有数值,但是我想调整代码,以便它可以根据用户需要在特定列中拾取数值,例如:B行或C行中的所有数值。我如何调整代码以实现这一点,或者是否有更简单的模块可用于指定范围,例如B2-B22。非常感谢您的帮助。请使用下面的perl代码进行检查。Excel工作表的行和列值以0,0开头。因此,相应地重复输入
我能够使用此特定代码选择特定excel工作表中的所有数值,但是我想调整代码,以便它可以根据用户需要在特定列中拾取数值,例如:B行或C行中的所有数值。我如何调整代码以实现这一点,或者是否有更简单的模块可用于指定范围,例如B2-B22。非常感谢您的帮助。请使用下面的perl代码进行检查。Excel工作表的行和列值以0,0开头。因此,相应地重复输入列号和行号,以获得所需的输出 代码:
因此,您需要从第2行到第22行的B列值,或者在泛型中从特定列获取值?@Praveen generic code从用户需要的特定列获取值
use Spreadsheet::ParseExcel::FmtDefault;
use Spreadsheet::ParseExcel;
my $parser = Spreadsheet::ParseExcel->new();
#my $name = <STDIN>;
die "You must provide a filename to $0 to be parsed as an Excel file" unless @ARGV;
my $workbook = $parser->parse($ARGV[0]);
my @values;
if ( !defined $workbook ) {
die $parser->error(), ".\n";
}
for my $worksheet ( $workbook->worksheets() ) {
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 ) {
my $cell = $worksheet->get_cell( $row, $col );
next unless $cell;
$cell->value();
my $cell_type = $cell->{Type};
if ($cell_type =~/Numeric/)
{
push @values, $cell->unformatted();
}
}
}
}
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: