PhpOffice: PHPExcel

edit | delete

Autor: Christopher-Daniel Wandrey

eingetragen: Mittwoch, 26. September 2012 um 09:49 Uhr (39/2012 Kalenderwoche)

geändert: Montag, 27. Februar 2023 um 14:50 Uhr (9/2023 Kalenderwoche)

Keywords: PHPOffice PHPExcel Excel2007 xlsx

Kategorien: Browser, PHP-ZF, HTML, PHP, PhpOffice, PHP-Symfony,

Text:

Grundkonfiguration für PHPExcel.
Beispiel anhand FLEGT Listen-Export
Siehe Quelltext.


Mögliche Dateiendungen:
'.xlsx'= 'Excel2007'
'.xls' = 'Excel5'
'.csv' = 'CSV'
'.pdf' = 'PDF'
'.html' = 'HTML'


s. a. Techdox-Artikel 168

Quellcode:  

/* Holt anhand der Filterkriterien den Tabelleninhalt */
$dbTable = new DbTable_FFlegt();
$filteringKriterien = $_SESSION['filter'];
$select = $dbTable->getFFlegt($filteringKriterien);
$model = new Project_ProjectTable();
$result = $model->getData($select);

$objPHPExcel = new PHPExcel();

//Setzt den ersten Tabellenblatt (notwenig wenn mehrere Blätter erstellt werden)
$objPHPExcel->setActiveSheetIndex(0);
//Setzt den Titel des ersten Tabellenblattes
$objPHPExcel->getActiveSheet()->setTitle('Komplette Liste');
//Setzt Querformat und Größe auf A4
$objPHPExcel->getActiveSheet()->getPageSetup()
->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
$objPHPExcel->getActiveSheet()->getPageSetup()
->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
//Fixiert (Friert) die erste Reihe
$objPHPExcel->getActiveSheet()->freezePane('A2');

//Setzt verschiedene Spaltengrößen
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(12);

//Setzt Schriftgröße und Schriftart
$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial');
$objPHPExcel->getDefaultStyle()->getFont()->setSize(8);

/* Definiert die verschiedenen Stile */
$styleHeaderArray = array(
	'borders' => array(
        'allborders' => array(
            'style' => PHPExcel_Style_Border::BORDER_THICK,
            'color' => array('argb' => PHPExcel_Style_Color::COLOR_BLACK),
        ),
	),
);
$styleDataArray = array(
    'borders' => array(
        'allborders' => array(
            'style' => PHPExcel_Style_Border::BORDER_THIN,
            'color' => array('argb' => PHPExcel_Style_Color::COLOR_BLACK),
        ),
    ),
);       

/* Setzt die erste Reihe fest und schreibt die Überschriften hinein */
$row = 1;

/* Setzt einen Zeilenumbruch in den ausgewählten Zellen */
$objPHPExcel->getActiveSheet()
->getStyle('A'.$row.':J'.$row)->getAlignment()->setWrapText(true);

$objPHPExcel->getActiveSheet()
->setCellValue('A'.$row, 'FLEGT_NR')
->setCellValue('B'.$row, 'Eingang der Genehmigung')
->setCellValue('C'.$row, 'Antragsstatus')
->setCellValue('D'.$row, 'Partnerland')
->setCellValue('E'.$row, 'Genehmigungsstelle')
->setCellValue('F'.$row, 'HS-Position')
->setCellValue('G'.$row, 'Holzsorte Wiss. Name')
->setCellValue('H'.$row, 'Holzsorte Handelsname')
->setCellValue('I'.$row, 'Länder in denen das Holz geschlagen wurde')
->setCellValue('J'.$row, 'FLEGT-Bewertung');
$objPHPExcel->getActiveSheet()->getStyle('A'.$row.':J'.$row)->applyFromArray($styleHeaderArray);

/* Setzt alle weiteren Reihen mit den Dateninhalt */
foreach ($result as $one) {
   $row++;
   $objPHPExcel->getActiveSheet()
   ->setCellValue('A'.$row, $one['flegt_nr'])
   ->setCellValue('B'.$row, PHPExcel_Shared_Date::stringToExcel($one['flegt_eingangsdatum']))
   ->setCellValue('C'.$row, $one['antragsstatus'])
   ->setCellValue('D'.$row, $one['partnerland'])
   ->setCellValue('E'.$row, $one['gstelle'])
   ->setCellValue('F'.$row, $one['hs_position_code'])
   ->setCellValue('G'.$row, $one['holzsorte_wiss'])
   ->setCellValue('H'.$row, $one['holzsorte_handelsname'])
   ->setCellValue('I'.$row, $one['laender_holzschlag'])
   ->setCellValue('J'.$row, $one['bewertung']);
   $objPHPExcel->getActiveSheet()->getStyle('B'.$row)
   ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY);
   $objPHPExcel->getActiveSheet()->getCell('A'. $row)
   ->setValueExplicit($one['flegt_nr'], PHPExcel_Cell_DataType::TYPE_STRING2);
   $objPHPExcel->getActiveSheet()->getCell('F'. $row)
   ->setValueExplicit($one['hs_position_code'], PHPExcel_Cell_DataType::TYPE_STRING2);
   $objPHPExcel->getActiveSheet()->getStyle('A'.$row.':J'.$row)->applyFromArray($styleDataArray);
}

//Setzt den Speicherort und den Dateinamen fest
$filename = 'temp/testExportFile2.xls';

//Erstellt und speichert die Datei
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save($filename);

/* Setzt die Header für den direkten Download fest */
header("Pragma: public", true);
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=".basename($filename));
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
die(file_get_contents($filename));