PHPExcel setReadFilter未筛选excel记录
我正在使用PHPExcel。我的excel中有100行。但我只想读50条记录。所以我设置了以下过滤器。 当我显示getHighestRow时;它说100行,虽然我已经为50行设置了过滤器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
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将为您完成此任务。