Прочитайте один лист из книги Excel в Perl - PullRequest
1 голос
/ 15 июля 2011

У меня есть скрипт perl, который читает файл Excel и анализирует с помощью модуля perl "Spreadsheet :: ParseExcel :: Simple; я хочу, чтобы мой скрипт читал только одну вкладку вместо чтения всех вкладок на электронной таблице. Вот что выглядиткак часть сценария.

# ### Use a Spreadsheet CPAN module for parsing Excel spreadsheet

require Spreadsheet::ParseExcel::Simple;
my $xls = Spreadsheet::ParseExcel::Simple->read('/opt/test.xls');

$Output_Circuit_file      = "/opt/result.text";

############################################################################
$err_idx = 0;
$out_idx = 0;
@date_var = localtime;

$date = sprintf("%02d",($date_var[4] + 1)) . '/' . sprintf("%02d",$date_var[3]) . '/' . ($date_var[5] + 1900);

## ############# 

foreach my $sheet ($xls->sheets) {
   while ($sheet->has_data) {
       my @words = $sheet ->next_row;
       $ctr++;

любой может помочь, где я могу изменить, чтобы прочитать мой сценарий только для чтения на вкладке «А» и игнорировать все остальное.

Ответы [ 2 ]

3 голосов
/ 15 июля 2011

foreach my $sheet ($xls->sheets) этот цикл заставляет вас читать все листы (рабочие листы), что является еще одним словом для вкладок в Excel. Просто прочитайте первый из $xls->sheets, и вы получите

@sheets = $xls->sheets;
$sheet = $sheets[0];
if($sheet->has_data) {
   ....
}
1 голос
/ 15 июля 2011

добавьте следующие строки и прочитайте определенное имя листа

   $sheetname= $sheet->{sheet}->{Name}; 
   if ($sheetname !~ 'Test') { next; }

Спасибо всем за ваши усилия, чтобы помочь мне !!

...