2016-08-28 354 views
1

我編寫了一個perl腳本來讀取excel文件中列的特定單元格值。perl腳本讀取excel文件的特定列中的所有元素

use strict; 
use warnings; 
use feature 'say'; 
use Spreadsheet::Read; 
use Spreadsheet::ParseExcel; 

my $workbook = ReadData ("C::/Users/Tej/Work.xlsx"); 
print $workbook->[6]{D4} . "\n"; 

一切都很好,直到這裏。我想寫邏輯來讀取列D下的所有單元格值,直到該列中有值。任何人都可以幫助我。

感謝

回答

2

假設我的數據是:

enter image description here

一種方法是做你想要的(因爲 'd' 對應於第4列):

$ cat a.pl 
use strict; 
use warnings; 
use feature 'say'; 
use Spreadsheet::Read; 
use Spreadsheet::ParseExcel; 
use Data::Dumper; 

my $workbook = ReadData ("/tmp/file.xls", parser => "xls"); 
print Dumper($workbook->[1]{cell}[4]); 
foreach my $cell (@{$workbook->[1]{cell}[4]}) { 
    if ($cell) { 
     print $cell . "\n"; 
    } 
} 


$ perl a.pl 
$VAR1 = [ 
      undef, 
      'grid', 
      1115, 
      1512, 
      212 
     ]; 
grid 
1115 
1512 
212 

另一個方法是使用Spreadsheet::BasicReadNamedCol

$ cat a.pl 
use strict; 
use warnings; 
use feature 'say'; 
use Spreadsheet::BasicReadNamedCol; 
use Data::Dumper; 
my @columnHeadings = (
    'grid', 
); 
my $workbook = new Spreadsheet::BasicReadNamedCol("/tmp/file.xls"); 
$workbook->setColumns(@columnHeadings); 
while (my $data = $workbook->getNextRow()) { 
    print "@{$data}[0]\n"; 
} 
$ perl a.pl 
grid 
1115 
1512 
212 
+0

非常感謝您的詳細解答。它有助於。 –

相關問題