2015-11-24 18 views
5

Sto provando a creare un altro foglio di lavoro e tutto funziona correttamente. Ma quello di cui ho bisogno ora è creare 1 in base a una variabile. Ad esempio:crea nuovo foglio di lavoro PHPExcel

Ho due opzioni una per la convalida e una per i risultati. Tutto è condizionato da una variabile booleana denominata $resultado.

ho la mia componente in 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'); 
} 

Dove this-> convalide è il secondo foglio di lavoro. Ora, ho bisogno che questo foglio di lavoro abbia un nome diverso, e quindi voglio altri dati incapsulati in una funzione. Così la mia funzione di generare condizioni voluto in questo modo:

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'); 
    } 
} 

Lo faccio in modo che il secondo foglio ha un nome diverso e dati diversi a seconda della variabile, ma non ho potuto farlo funzionare. Generico solo 1 foglio con il titolo a seconda della variabile, non è quello che voglio.

risposta

6

Crea nuovo foglio di lavoro PHPExcel

Hi Io davvero non so se la mia risposta potrebbe davvero fare la magia alla tua domanda. Comunque mi sembra affascinante.

Risposta:
Basta provare a fare quanto segue per il metodo di generate come ho previsto il seguente frammento di codice:

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'); 
    } 
} 

Per ulteriori riferimenti vedere il seguente SO Q&A Thread too.

+1

Grazie ! questo funziona bene per me. Come ultima domanda si può fare per aprire la prima pagina di Excel? Ho usato per creare questi due, avrai sempre un fisso. Mi piacerebbe che creasse l'excel apri la scheda principale – NHTorres

+1

Se la mia risposta ha funzionato per te, cos'altro non viene chiarito? :-) Non riesco a capire se hai trovato la soluzione o no. Puoi sempre fare riferimento alla prima pagina (primo foglio) seguendo la riga di codice, 'getSheet ($ indexOfSheet)' ma ricorda che potrebbe dare un'eccezione se hai dato un indice di foglio non esistente. Vi consiglio di visitare il seguente link per ulteriori chiarimenti. –

+0

Sì! hai ragione era solo un mio errore, tutto funziona bene per me con la tua soluzione, grazie mille (: – NHTorres

Problemi correlati