2016-09-01 2 views
0

Ich habe eine XLSX-Datei mit 4 Blättern. Mit dem folgenden Code kann ich nur das erste Blatt exportieren.phpexcel export ausgewählten Blatt zu pdf

Ich möchte in der Lage, jedes Blatt mit dem Namen zu pdf exportieren.

Unten ist das, was ich bisher getan habe:

$export_file = 'export.pdf'; 

    $import_file = './media/migration/import.xlsx'; 

    $sheet_name = 'Menu_A'; 

    $rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; 

    $rendererLibraryPath = '/var/www/public/vendor/mpdf/mpdf'; 

    $object = PHPExcel_IOFactory::load($import_file); 

    $object->setActiveSheetIndexByName($sheet_name); 

    PHPExcel_Settings::setPdfRenderer($rendererName, $rendererLibraryPath); 

    $objWriter = PHPExcel_IOFactory::createWriter($object, 'PDF'); 

    header('Content-Type: application/pdf'); 
    header('Content-Disposition: attachment;filename="' . $export_file . '"'); 
    header('Cache-Control: max-age=0'); 

    $objWriter->save('php://output'); 
+0

haben wahrscheinlich eine Schleife obwohl die Blätter – nogad

+0

@nogad was ist, wenn ich zu viele Blätter haben. – mallix

+0

nicht sicher, dass Sie "zu vielen" Blättern haben können. Wenn Sie 1 pdf wollen, sollten Sie die Daten zuerst kombinieren. für mehrere PDFs (Sie können sie nicht an den Browser senden) einfach weiterschleifen – nogad

Antwort

1

Standardmäßig wird das erste Arbeitsblatt für html/PDF-Ausgabe erzeugt wird, nur, wenn Sie die Writer sagen, welches Blatt vor dem Speichern angezeigt werden:

$objWriter->setSheetIndex(1); 

(für das zweite Blatt)

$objWriter->setSheetIndex($object->getActiveSheetIndex()); 

(für den aktuellen aktiven wor ksheet)

$objWriter->setSheetIndex($object->getIndex($object->getSheetByName($sheet_name))); 

(für eine benannte Arbeitsblatt)