Автор Тема: Spreadsheet::ParseExcel  (Прочитано 1929 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Biggelow

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
Spreadsheet::ParseExcel
« : 05 Июля 2007, 10:37:47 »
Столкнулся с такой проблемой, если не находит ячейки то цикл завершает, как это предотвартить, чтлб он дальше продолжал.

Пишет такую ошибку: Can\'t call method "Value" on an undefined value

for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++)
{
   my $oWkS = $oBook->{Worksheet}[$oBook->{SheetCount}];
   
   $q = "insert into `$CatalogTable` (`title`) ";
   $q.= "values (\'".$oWkS->{Name}."\')";
   &mysql_query($q, $dbh);
   
   
   my $q = "select * from `$CatalogTable` where `title` = \'".$oWkS->{Name}."\' ";
   my $r = mysql_query($q, $dbh);
   @data = $r->fetchrow_array;
   $path=@data[0];
   $r->finish();
   
      
   $oWkS->{MaxRow} ||= $oWkS->{MinRow};
   foreach my $iR ($oWkS->{MinRow}+3 .. $oWkS->{MaxRow}) {
         my $title=$oWkS->{Cells}[$iR][1]->Value;
         my $nomer=$oWkS->{Cells}[$iR][0]->Value;
         if($title ne "" && $title ne "Наименование" && $nomer){
            my $q = "insert into `$RecordsTable` (`title`,`path`) ";
            $q.= "values (\'".$title."\',\'".$path."\')";
            &mysql_query($q, $dbh);
         }
   }
   
}

Оффлайн Biggelow

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
Spreadsheet::ParseExcel
« Ответ #1 : 06 Июля 2007, 07:02:12 »
Решил проблему! Надо ячейку на существование проверять:
if($oWkS->{Cells}[$iR][2]->{Val}){
               $n1=$oWkS->{Cells}[$iR][2]->Value;
            }

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28