PHPでEXCELファイルのセルを読み込む処理で、意図しない値の場合に実行時エラーが「Call to a member function getRowIterator() on null」が発生するため、例外処理で下記のようにtry catchを記載しました。
しかしcatchできずにcakephp3のエラーテンプレートのページに飛んでエラー内容が表示されてしまいます。
componentファイルでtry catchのしかたを教えてください。
※controllerファイルのtry catchは正しく処理されます。
よろしくお願い致します。
component
1<?php 2namespace App\Controller\Component; 3 4use Cake\Controller\Component; 5use Cake\ORM\TableRegistry; 6use Cake\Datasource\ConnectionManager; 7 8// EXCEL用 9use PhpOffice\PhpSpreadsheet\Spreadsheet; 10use PhpOffice\PhpSpreadsheet\Writer\Xlsx; 11use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader; 12use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxWriter; 13use PhpOffice\PhpSpreadsheet\Style; 14use PhpOffice\PhpSpreadsheet\Style\Border; 15use PhpOffice\PhpSpreadsheet\Style\Fill; 16 17 private function readEXCEL($filePath) 18 { 19 try{ 20 $row_cnt = 0; 21 $reader = new XlsxReader(); 22 $spreadsheet = $reader->load($filePath); //ファイルの読み込み 23 $sheet = $spreadsheet->getSheetByName("Marine"); //ファイルからシートを取り出す 24 25 // セルから値を取り出す 26 foreach ($sheet->getRowIterator() as $row) { 27 $row_cnt = $row_cnt + 1; 28 if ($row_cnt == 1){ 29 continue; // 1行目は列見出し行のため処理スキップ 30 } 31 $camp_no = $sheet->getCell("A".$row->getRowIndex())->getValue(); //A列(キャンペーンNo) 32 $serial = $sheet->getCell("C".$row->getRowIndex())->getValue(); //C列(シリアルNo) 33 $this->serialCheck($camp_no,$serial); 34 } 35 }catch(Exception $e){ 36 var_dump("エラーはんどりんぐ"); 37 } 38 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/15 00:07