2016-04-18 5 views
0

Ich habe eine Excel-Tabelle mit 5 Spalten, in denen ich Details der Spalte C. möchte meinen Code unten ist, die ichwie Spalte in Excel-Tabelle lesen Perl mit

use Win32::OLE::Const 'Microsoft Excel'; 
use Spreadsheet::Read; 
use Spreadsheet::ParseExcel; 
my $parser = Spreadsheet::ParseExcel->new(); 
my $workbook = $parser->parse('abc.xls'); 
my $sheet_got; 
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 = $cell->value(); 
      $sheet_got .= "$cell ";    
      }   
     } 
    } 
+0

Bitte formatieren Sie Ihren Code mit der Editor-Symbolleiste. Es ist nicht lesbar. – ehh

Antwort

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 ";    
      }   
    } 

dem eindeutig hervorgeht, dass Sie alle Werte von Excel-Datei lesen. Erwähnen Sie die Spalte, die Sie extrahieren müssen,

wie diese versuchen,

sagen Excel-Daten wie

Name - Alter - Geschlecht - Ergebnis

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

Also hier Spalte C, Geschlecht, so das Ergebnis MMFM

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; 

Der Ausgang wird sein sollte ,

>perl parseexcelsample.pl 
M M M F 
+0

es funktioniert gut ... vielen Dank ... – DevzS

+0

Großartig! Vielen Dank.. –

0

Sie haben versucht, kann Schritt versuchen .

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++;   
}  
Verwandte Themen