PhpOffice: PHPExcel
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'
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));