2013-10-10 6 views
0

각 Excel 파일이 들어있는 수백 개의 폴더를 스캔하려고합니다.PHP foreach 루프에서 정의되지 않은 오프셋을 건너 뜁니까?

여기에 단순화 된 워크 플로우를 루프에서

  • 스캔 폴더의
  • 첫 번째 폴더 이름을 얻고 엑셀은
  • 폴더를 열고 (이름과 몇 가지 정보를 얻을 수) 몇 가지 정규식 물마루 실행하고 열
  • 스캔 내부 파일 정보의
  • 가 데이터베이스에 모든 것을 저장 (PHPExcel 포함)에 대한 파일을 엑셀

좋아,이 모든 잘 작동하고, 내가 엑셀 ​​파일이 손상되었을 때 제외.

문제는 PHPEXCEL 라이브러리가 읽을 수 없다는 것을 의미합니다. "Notice : Undefined offset :"을 통해이 코드는 내 foreach 루프를 나눕니다.어떻게 든 건너 뛰거나 뭔가하는 오류 및 통지를하고 다음 폴더를 계속하고을 제기하는 방법 : 그래서 여기

는 내가 무엇을 찾고있다.

방법이 있습니까? 도움을 주셔서 감사합니다.

foreach ($inputFileName as $key => $fileName) { 
$objReader = PHPExcel_IOFactory::load($fileName); 

$activeSheet = $objReader->getActiveSheet()->toArray(null,false,true,false); 

echo "<pre>"; 
    echo $key; 
echo "</pre>"; 
} 
+1

phpexcel 라이브러리의 버그와 같습니다. – cmbuckley

+0

아마도'try' /'catch'가 오류를 처리 할 수 ​​있습니다. – Barmar

+0

@Barmar 예외 만 catch 할 수는 있지만 예외는 없습니다. –

답변

0

은 어쩌면 당신은 통지 건너 스크립트의 시작 부분에 함수는 error_reporting를 사용할 수 있습니다 :

error_reporting(E_ERROR | E_WARNING | E_PARSE); 

을 그리고 원래로 다시 설정 그래서 여기에 좋아

는 foreach 루프입니다 일단 치료를 끝내면 가치 :

error_reporting(-1); //Report all errors 

여기에서 자세한 정보를 확인할 수 있습니다. : http://php.net/manual/fr/function.error-reporting.php

+0

@ Barmar에게 내가 말했듯이 내가 시도했지만 루프는 여전히 예고없이 멈 춥니 다. –

+0

@ Mr.Sam은 스크립트 상단에서'error_reporing (0)'을 수행 한 다음 불행히도 – Yang

1

그냥 추측 : 그들은 실패 할 경우 기능이 false을 반환 할

foreach ($inputFileName as $key => $fileName) { 
    $objReader = PHPExcel_IOFactory::load($fileName); 

    if ($objReader) { 
     $activeSheet = $objReader->getActiveSheet()->toArray(null,false,true,false); 

     echo "<pre>"; 
      echo $key; 
     echo "</pre>"; 
    } 
} 

그것은 꽤 일반적입니다.

+0

그게 작동하지 않았지만 일종의 내게 방향을 준, 내가이 일을하고 싶지 않았어하지만 지금은 내 유일한 해결책은 PHPEXCEL 라이브러리를 해킹하는 것입니다, 어떤 결과를 줄 수 있다면 그것은 Excel을 열 수 없습니다 –