パスワード付きのExcelファイルかどうかを判定する(PHP)
パスワード付きExcelをPhpSpreadsheetで開こうとすると、$spreadsheet = $reader->load($filename);ここで、止まってしまい、その後の処理ができません。そこで、この前で、パスワード付きExcelかどうかを判定する必要があります。拡張子がxlsのExcelファイルの場合は、$password = 0;$handle = fopen($filename, "r");while ($line = fgets($handle)) { if(strpos($line,"E\x00n\x00h\x00a\x00n\x00c\x00e\x00d\x00 \x00C\x00r\x00y\x00p\x00t\x00o\x00g\x00r\x00a\x00p\x00h\x00i\x00c") !== false){ echo "パスワード付き<br>"; $password = 1; }}fclose($handle);if($password == 1){// ここにパスワード付きの場合の処理を書く echo "パスワード付きのExcelファイルなので、処理できませんでした"; exit(1);}$spreadsheet = $reader->load($filename);拡張子がxlsxのExcelファイルの場合は、$password = 0;$handle = fopen($filename, "r");while ($line = fgets($handle)) { if(strpos($line,"keyEncryptor/password") !== false){ echo "パスワード付き<br>"; $password = 1; }}fclose($handle);if($password == 1){// ここにパスワード付きの場合の処理を書く echo "パスワード付きのExcelファイルなので、処理できませんでした"; exit(1);}$spreadsheet = $reader->load($filename);今のところ、上記の処理で対応しています。もっと良い方法があるよという方は、教えてくださいね。