PHPExcel setReadFilter未筛选excel记录

PHPExcel setReadFilter未筛选excel记录,php,Php,我正在使用PHPExcel。我的excel中有100行。但我只想读50条记录。所以我设置了以下过滤器。 当我显示getHighestRow时;它说100行,虽然我已经为50行设置了过滤器 class MyReadFilter implements PHPExcel_Reader_IReadFilter { private $z; public function __construct($z){ $this->z

我正在使用PHPExcel。我的excel中有100行。但我只想读50条记录。所以我设置了以下过滤器。 当我显示getHighestRow时;它说100行,虽然我已经为50行设置了过滤器

class MyReadFilter implements PHPExcel_Reader_IReadFilter {
            private $z;
            public function __construct($z){
                $this->z=$z;
            }
            public function readCell($column, $row, $worksheetName='') {
                    if ($row > (($this->z - 1) * 1000) && $row <= ($this->z * 1000)) {
                        //echo "this- > z". $this->z;
                        return true;
                    }
                return false;
            }
        }

            $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_sqlite3;
        if (!PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) 
                {
                die($cacheMethod . " caching method is not available" . EOL);
                }
            $cacheSettings = array( 
                'cacheTime' => 6000
            );              
        PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
            $objReader = new PHPExcel_Reader_Excel2007();
            $objReader->setReadFilter( new MyReadFilter(50) );
            $objReader->setReadDataOnly(true);
            $objPHPExcel = $objReader->load($inputFileName);
            $objSheet = $objPHPExcel->getActiveSheet();
            $no_of_rows=$objSheet->getHighestRow();
            echo "no_of_rows=$no_of_rows";

getHighestRow始终返回当前工作表中的最高行号。读卡器过滤器不影响它。只需读取所需的数据,不必担心getHighestRow。@hindmost:您是否推荐任何其他phpexcel读取器,因为此方法phpexcel正在泄漏内存,所以我正在努力拆分上述示例中所示的变量。我建议您使用phpexcel_IOFactory::identify自动识别文件格式您是指文件格式?它已经是一个excel了。它的好处是什么?好处是你不需要关心合适的读者类别选择。PHPExcel_IOFactory::identify将为您完成此任务。