PHPSpreadSheet 无法读取 .xls 文件(未被识别为 OLE 文件)

时间:2021-02-05 12:59:30

标签: php phpspreadsheet codeigniter-4

我正在尝试解析 .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;

}
  1. 该文件可以通过 Microsoft Excel 打开,没有任何问题
  2. 我使用相同的代码解析了一个 xlsx 文件,没有问题
  3. 我创建了一个自定义文件读取过滤器来限制正在读取的列

0 个答案:

没有答案