2015-11-24 10 views
5

Próbuję utworzyć kolejny arkusz roboczy i wszystko działa poprawnie. Ale teraz potrzebuję stworzyć 1 zależnie od zmiennej. Na przykład:tworzenie nowego arkusza roboczego PHPExcel

Mam dwie opcje jeden do sprawdzania poprawności i jeden do wyników. Wszystko jest uwarunkowane zmienną binarną o nazwie $resultado.

Mam składnik w 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'); 
} 

Gdzie this-> walidacji jest drugi arkusz. Teraz potrzebuję tego arkusza roboczego ma inną nazwę, dlatego chcę, aby inne dane były zawarte w funkcji. Więc moja funkcja generowania warunek chciał w ten sposób:

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

Robię to tak, że drugi arkusz ma inną nazwę i inne dane w zależności od zmiennej, ale nie mogę zmusić go do pracy. Generuję tylko 1 arkusz z tytułem w zależności od zmiennej, to nie jest to, czego chcę.

Odpowiedz

6

Tworzenie nowego arkusza PHPExcel

Hi I naprawdę nie wiem, czy moja odpowiedź może naprawdę zrobić magię do Twojego pytania. Jednak wydaje mi się to fascynujące.

Odpowiedź:
prostu spróbuj w następujący sposób do sposobu generate jakom umieszczono fragment podany kod:

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

Dla dalszego odniesienia zobacz następujący SO Q&A Thread too.

+1

Dziękuję ! to działa dobrze dla mnie. Jako ostatnie pytanie można zrobić, aby otworzyć pierwszą stronę programu Excel? Kiedyś tworzyłem te dwa, zawsze będziesz mieć ustalone. Chciałbym, abyście stworzyli Excela, otwórz główny arkusz – NHTorres

+1

Jeśli moja odpowiedź zadziałała, co jeszcze nie zostanie wyjaśnione? :-) Nie mogę zrozumieć, jeśli znalazłeś rozwiązanie, czy nie. Zawsze można odnieść się do pierwszej strony (pierwszy arkusz), stosując następującą linię kodu, 'getSheet ($ indexOfSheet)' ale pamiętaj, że może dać wyjątek, jeśli podałeś indeks nieistniejącego arkusza. Polecam do odwiedzenia poniższego linku dla dalszych wyjaśnień. –

+0

Tak! masz rację tylko mój błąd, wszystko działa dobrze dla mnie z twoim rozwiązaniem, dziękuję bardzo (: – NHTorres