0

それぞれが Excel ファイルを含む何百ものフォルダーをスキャンしようとしています。

簡略化されたワークフローは次のとおりです

  • フォルダをループでスキャン
  • 最初のフォルダー名を取得し、正規表現を使用して実行します(名前から情報を取得するため)
  • フォルダを開き、内部のExcelファイルを開きます
  • Excelファイルをスキャンして情報を取得します(PHPExcelを使用)
  • すべてをデータベースに保存

わかりましたので、破損したExcelファイルに遭遇した場合を除いて、これはすべて正常に機能しています。

問題は、PHPEXCEL ライブラリがそれを読み取ることができず、「Notice: Undefined offset:」を返し、これがforeachループを壊すことです。

だからここに私が探しているものがあります: どういうわけかエラーや通知をスキップして、次のフォルダーとファイルを続行する方法です

方法はありますか?助けてくれてありがとう。

わかりましたので、ここに 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>";
}
4

2 に答える 2

1

推測:

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

false関数が失敗したときに戻ることはかなり一般的です。

于 2013-10-10T08:40:56.303 に答える
0

おそらく、スクリプトの先頭で関数 error_reporting を使用して、通知をスキップできます。

error_reporting(E_ERROR | E_WARNING | E_PARSE);

治療が終了したら、元の値に戻します。

error_reporting(-1); //Report all errors

ここで詳細情報を見つけることができます: http://php.net/manual/fr/function.error-reporting.php

于 2013-10-10T08:29:44.887 に答える