在循环中调用PHP类(PHPExcel)

时间:2014-02-22 15:02:28

标签: php

我需要使用PHPExcel中使用的类五次来改变其内容,如下所示。 但这在第二次迭代中失败了..请帮我解决这个问题?

    for($z=1;$z<=5;$z++)
    {


   class MyReadFilter implements PHPExcel_Reader_IReadFilter
                    {
        public function readCell($column, $row, $worksheetName = '') {
                            if ($row > ($z-1)*1000 && $row <= $z*1000)
                            {
                                return true;
                            }

                            return false;
                        }
                    }   

    $objReader = new PHPExcel_Reader_Excel2007();
    //setting filter to read only limited records..
    $objReader->setReadFilter( new MyReadFilter() );

简单来说,我需要拨打$objReader->setReadFilter(new MyReadFilter());五次

1 个答案:

答案 0 :(得分:1)

我不知道z是什么以及何时应该迭代。

我可以想到太多的解决方案,其中一些应该对你有好处,这取决于你想要做什么,但我不知道你是否有足够的OOP,可能你应该先学习一些书或教程关于基础知识。

这是一个可行的解决方案:

class MyReadFilter implements PHPExcel_Reader_IReadFilter {
    public function readCell($column, $row, $worksheetName='') {
        for ($z = 1; $z <= 5; $z++) {

            if ($row > ($z - 1) * 1000 && $row <= $z * 1000) {
                return true;
            }
        }

        return false;
    }
}

$objReader=new PHPExcel_Reader_Excel2007();
        //setting filter to read only limited records..
$objReader->setReadFilter(new MyReadFilter());

这是另一种可能的解决方案,如果你想用不同的结果多次读取文件

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) {
                return true;
            }


        return false;
    }
}

$objReader=new PHPExcel_Reader_Excel2007();

        for ($z = 1; $z <= 5; $z++) {
        //setting filter to read only limited records..
        $objReader->setReadFilter(new MyReadFilter($z));
  //..whatever else
        }

如果你知道你需要什么,我想你会明白你需要哪一个。如果不这样做,我们需要更多细节