2016-09-01 5 views
0

У меня есть xlsx файл с 4 листами. Используя приведенный ниже код, я могу экспортировать только первый лист.phpexcel export selected sheet to pdf

Я хочу, чтобы иметь возможность экспортировать любой лист по имени в pdf.

Ниже то, что я сделал до сих пор:

$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

, вероятно, придется петлю, хотя листы – nogad

+0

@nogad что, если у меня есть слишком много листов. – mallix

+0

не уверен, что у вас могут быть «многие» листы. если вы хотите 1 pdf, вы должны сначала объединить данные. для нескольких PDF-файлов (вы не можете отправить их в браузер) просто продолжайте цикл – nogad

ответ

1

По умолчанию только первый лист будет создан для вывода HTML/PDF, если не сказать Writer, который лист для отображения перед сохранением:

$objWriter->setSheetIndex(1); 

(для второго листа)

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

(для текущего активного вр ksheet)

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

(для именованного листа)