PHPExcel: Druckbereich an die Seitenbreite anpassen (fit to page)
So kann man mit PHPExcel den Druckbereich so festlegen, dass die Inhalte des Arbeitsblattes beim Drucken auf die Seitenbreite skaliert werden.
Wenn man mit Excel bzw. PHPExcel Daten in ein Worksheet einfügt, kann es sehr leicht passieren, dass die Spalten über den eigentlichen Druckbereich hinausgehen. Beim Drucken kann es dann passieren, dass nicht alle Inhalte auf einem Blatt Papier ausgedruckt werden, sondern das weitere Blätter genutzt werden müssen. Das ganze kann man aber in den Seiteneinstellungen beim Erzeugen mit PHPExcel direkt verhindern.
Grundsätzlich gehe ich in diesem Code-Beispiel davon aus, dass wir bereits ein PHPExcel-Dokument erstellt haben ($phpexcel
). Als erstes holen wir uns dann die Seiteneinstellungen (pageSetup
) des aktuellen Arbeitsblattes. Mit setOrientation und setPaperSize setzen wir dann zunächst die Ausrichtung auf Querformat und die Papiergröße auf Din A4.
$pageSetup = $phpexcel->getActiveSheet()->getPageSetup(); // Papiergröße und Ausrichtung $pageSetup->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); $pageSetup->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); // Fit to page $pageSetup->setFitToPage(true); $pageSetup->setFitToWidth(1); $pageSetup->setFitToHeight(0);
Im nächsten Schritt stellen wir mit setFitToPage
die grundsätzliche Skalierung an. Nun muss lediglich noch festgelegt werden, ob die Höhe, die Breite oder beides skaliert werden soll. In diesem Beispiel skaliere ich das Worksheet lediglich auf die Seitenbreite setFitToWidth(1)
.
Grundsätzlich lassen sich so wunderbar verschiedene Einstellungen vornehmen.
Diskussion
Noch erwähnenswert wäre, dass wenn man setFitToWidth() und setFitToHeight() gesetzt hat, das setFitToPage() automatisch auf true gesetzt wird, womit man dieses getrost weglassen kann um sich die schreibarbeit zu vermindern.
Hier hat sich leider ein kleiner Fehler eingeschlichen. Um die Ausrichtung auf Querformat zu bringen muss ORIENTATION_LANDSCAPE angegeben werden, an Stelle von ORIENTATION_PORTRAIT. Ansonsten gute kurze Zusammenfassung :-)