创建新工作表PHPExcel

NHT*_*res 5 php excel cakephp

我正在尝试创建另一个工作表,一切正常.但我现在需要的是根据变量创建1.例如 :

我有两个选项用于验证,一个用于结果.一切都由一个名为的布尔变量来调节$resultado.

我在CakePHP中有我的组件

function ExcelCargaMasivaComponent() {
    $this->xls = new PHPExcel();
    $this->sheet = $this->xls->getActiveSheet();
    $this->sheet->setTitle("Worksheet");
    $this->sheet->getDefaultStyle()->getFont()->setName('Verdana');
    $this->xls->createSheet();
    $this->xls->setActiveSheetIndex(1);
    $this->validations = $this->xls->getActiveSheet();
    $this->validations->setTitle('Validations');
}
Run Code Online (Sandbox Code Playgroud)

这个 - >验证是第二个工作表.现在,我需要这个工作表有一个不同的名称,因此我希望其他数据封装在一个函数中.所以我的函数以这种方式生成所需条件:

function ExcelCargaMasivaComponent() {
    $this->xls = new PHPExcel();
    $this->sheet = $this->xls->getActiveSheet();
    $this->sheet->setTitle("Worksheet");
    $this->sheet->getDefaultStyle()->getFont()->setName('Verdana');
    $this->xls->createSheet();
    $this->xls->setActiveSheetIndex(1);
}

function generate($title = 'Report', $headers = array(), $data = array(), $uid = false, $resultados = false){
    if($resultados){
       $this->validations = $this->xls->getActiveSheet();
       $this->validations->setTitle('Resultados');
    }else{
       $this->validations = $this->xls->getActiveSheet();
       $this->validations->setTitle('Validations');
    }
}
Run Code Online (Sandbox Code Playgroud)

我这样做,以便第二张表具有不同的名称和不同的数据,具体取决于变量,但我无法让它工作.我只根据变量生成1张标题,这不是我想要的.

Ran*_*man 7

创建新工作表PHPExcel

嗨,我真的不知道我的答案是否真的可以为你的问题做出真正的魔力.然而,这对我来说似乎很吸引人.

答:
只需尝试对您的generate方法执行以下操作,因为我提供了以下代码段:

function ExcelCargaMasivaComponent() {
    $this->xls = new PHPExcel();
    $this->sheet = $this->xls->getActiveSheet();
    $this->sheet->setTitle("Worksheet");
    $this->sheet->getDefaultStyle()->getFont()->setName('Verdana');
//  $this->xls->createSheet(); // comment out this lines as we keep
//  $this->xls->setActiveSheetIndex(1);  // them in our generate method
}

function generate($title = 'Report', $headers = array(), $data = array(), $uid = false, $resultados = false) {
    if ($resultados) {
       $this->xls->createSheet(0);
       $this->xls->setActiveSheetIndex(0); // This is the first required line
       $this->validations = $this->xls->getActiveSheet();
       $this->validations->setTitle('Resultados');
    } else {
       $this->xls->createSheet(1);           
       $this->xls->setActiveSheetIndex(1); // This is the second required line
       $this->validations = $this->xls->getActiveSheet();
       $this->validations->setTitle('Validations');
    }
}
Run Code Online (Sandbox Code Playgroud)

如需进一步参考,请参阅以下SO Q&A线程.