phpexcel将选定的工作表导出为pdf

Posted

技术标签:

【中文标题】phpexcel将选定的工作表导出为pdf【英文标题】:phpexcel export selected sheet to pdf 【发布时间】:2016-09-01 20:10:48 【问题描述】:

我有一个包含 4 张纸的 xlsx 文件。使用下面的代码,我只能导出第一张工作表。

我希望能够按名称将任何工作表导出为 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');

【问题讨论】:

可能需要循环播放床单 @nogad 如果我有太多床单怎么办。 不确定您是否可以拥有“多个”工作表。如果你想要 1 个 pdf,你应该先合并数据。对于多个 pdf(您不能将它们发送到浏览器),请继续循环 @nogad 我的 excel 文件中有很多工作表,我只想将其中一张导出为 pdf。我想按名称或索引选择那个,而不是循环直到我点击它。 然后我看不到问题。您在上面的代码中有$sheet_name = 'Menu_A';,只需根据需要更改它 【参考方案1】:

默认情况下,只会为 html/pdf 输出生成第一个工作表,除非您在保存之前告诉 Writer 要显示哪个工作表:

$objWriter->setSheetIndex(1);

(第二张纸)

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

(对于当前活动的工作表)

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

(对于命名工作表)

【讨论】:

以上是关于phpexcel将选定的工作表导出为pdf的主要内容,如果未能解决你的问题,请参考以下文章

通过 VBA 代码将多张工作表导出为 .pdf

将 Excel 工作表导出到 PDF 文件时出现奇怪的 Powershell 行为

隐藏的工作表会导致Google表格的导出工作表作为PDF网址的输出损坏

php导出word和pdf文件

保存 Excel 文件并使用不同的工作表将其导出为 pdf

将列表框中选定的 Excel 工作表保存为新的工作簿/Excel 文件