我正在尝试解析 .xls 文件,但我不断收到错误消息“文件名 something-file.xls 未被识别为 OLE 文件”
foreach($inventoryFileNames as $file){
$inventoryFileReader = $this->getFileReader($file); //send filename for a reader
$inventoryFilter = new FileReadFilter(2, ['Y', 'S', 'AA', 'U', 'Z', 'Q']); //create custom read filter
$inventoryFileReader->setReadFilter($inventoryFilter); // set custom read filter
$chopFileName = explode(' ', $file);
array_pop($chopFileName); // takes out the file extension
array_pop($chopFileName); // takes out an unnecessary string
array_pop($chopFileName); // takes out another unnecessary string
$inventoryBranch = implode(' ', $chopFileName); //branch name
$inventoryFile = $inventoryFileReader->load($targetPath . $file); // Error here for xls files
$inventoryData[$inventoryBranch] = $this->parseInventoryFile();
}
注意:文件名的标准格式包括分支名称,以便进一步处理。然后将文件名传递给返回文件读取器的方法,该方法称为 getFileReader();
public function getFileReader($filename){
$reader = null;
$temp = explode(".", $filename); // split string to get extension
$fileExt = end($temp); //file extension without "period"
if($fileExt == 'xls'){
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
//$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xls'); // this produces the same error as the previous line
}
else if($fileExt == 'xlsx')
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
return $reader;
}