如何使用perl读取Excel工作表中的列

时间:2016-04-18 05:03:40

标签: perl

我有一个包含5列的Excel工作表,其中我想要C列的详细信息。 下面是我的代码,我试过

{{1}}

2 个答案:

答案 0 :(得分:0)

你可以试试增量。

my $i;
for my $col ( $col_min .. $col_max ) {
    my $cell = $worksheet->get_cell( $row, $col );
    if (!$cell) {
        $i++;
        next;
    }
    $cell = $cell->value();
    $sheet_got .= "$cell " if ($i == 2);
    $i++;         
}    

答案 1 :(得分:0)

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 = $cell->value();
           $sheet_got .= "$cell ";               
           }           
    }

这清楚地表明您正在阅读excel文件的所有值。 提到你需要提取的列,

试试这个,

说excel数据,

姓名 - 年龄 - 性别 - 结果

jack - 21 - M - ok - PASS

dane - 32 - M - ok - PASS

stuart - 45 - M - ok - PASS

jane 65 F ok PASS

po - 24 - M - ok - PASS

所以这里的列C是Gender,所以结果应该是M M F M

use Win32::OLE::Const 'Microsoft Excel';
use Spreadsheet::Read;
use Spreadsheet::ParseExcel;
my $parser   = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse('test.xls');
my $sheet_got;
for my $worksheet ( $workbook->worksheets() ) 
{
my ( $row_min, $row_max ) = $worksheet->row_range();
my $col = 2;
for (;$row_min<$row_max;)
    {
        my $cell = $worksheet->get_cell( $row_min, $col );
        next unless $cell;
        $cell = $cell->value();
        $sheet_got .= "$cell ";
        $row_min = $row_min + 1;
    }
}
print $sheet_got;

输出将是,

>perl parseexcelsample.pl
M M M F