Napisałem komponent którego zadaniem jest zbieranie danych a ostatnim etapem było generowanie pliku cvs okazało się jednak, że panie które mają analizować zebrane dane nie potrafią sobie tego zaimportować do Excela (mi wchodzi bez problemu).
Komponent oczywiście w modelu MVC po stronie administratora
Wymagane jest absolutnie czyste wywołanie żeby wygenerować plik xls do zapisania
Użyłem do tego celu biblioteki PHPExcel z której bez trudu generuję plik jednak nie bardzo mi wychodzi to z poziomu joomla
Kod PHP:
/**
* Położenie pliku components/com_ankiety/views/ankiety/view.xls.php
*/
error_reporting(E_ALL);
date_default_timezone_set('Europe/Warsaw');
require_once '../../excellib/Classes/PHPExcel.php';
// w odniesieniu do głównego katalogu komponentu
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Swłaściwości
$objPHPExcel->getProperties()->setCreator("@seeb.pl ISP")
->setLastModifiedBy("@seeb.pl ISP")
->setTitle("Plik z komponentu com_ankiety")
->setSubject("Dane z ankiet komponentu joomla!")
->setDescription("Dokument generowany z com_ankiety.")
->setKeywords("office 2007 openxml php")
->setCategory("Dane do analizy");
// formatujemy wygląd linii 1
$objPHPExcel->getActiveSheet(0)->getStyle('A1:BX1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);
$objPHPExcel->getActiveSheet(0)->getStyle('A1:BX1')->getFont()->setName('Arial')->setSize(12);
//$objPHPExcel->getDefaultStyle(0)->getFont()->setName('Arial')->setSize(10);
$objPHPExcel->getActiveSheet(0)->setTitle('Ankiety absolwentów');
// dodajemy dane
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1','ID')
->setCellValue('B1','A1')
->setCellValue('C1','A2')
->setCellValue('D1','A3')
->setCellValue('BX1','E1_2');
// obcięte
$objPHPExcel->getActiveSheet(0)
->setCellValue('A'.$index,$dane->ID)
->setCellValue('B'.$index,$daneB)
->setCellValue('C'.$index,$dane->A2)
->setCellValue('BX'.$index,$dane->E1_2);
//--------------------------------------------------------------------------------------------------------------------------
$objPHPExcel->createSheet(1);
$objPHPExcel->getSheet(1)->setTitle('Ankiety pracodawców');
$objPHPExcel->setActiveSheetIndex(1);
$objPHPExcel->getActiveSheet(1)
->setCellValue('A1','id')
->setCellValue('B1','A1');
//pętla foreach
foreach ($Dane as $pracodawca){
$objPHPExcel->getActiveSheet(1)
->setCellValue('A'.$indexpr,$pracodawca->id)
->setCellValue('B'.$indexpr,$pracodawca->A1);
}
// celowo obciąłem bo to nikogo nie obchodzi
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="ankiety.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
Jak wypluc z joomla MVC tylko widok z danymi bez całej tej otoczki?
chyba nie muszę mówić o co chodzi. Bez nagłówków menu etc. itp.