how to include external php file in drupal 8 [closed]
-
07-01-2021 - |
Question
I want to merge two xlsx file and download merged file in drupal 8. So i used a PHPExcel library for doing so.
But i am not able to include a PHPExcel.php file in custom controller for that. I used require_once, module_load_include() but does not work for me.
How can i include it . please help.
require_once DRUPAL_ROOT.'/'.drupal_get_path('module','custom').'/src/Controller/PHPExcel.php';
or
module_load_include('php', 'custom', 'src/Controller/PHPExcel');
$file1 = 'ford.xlsx';
$file2 = 'toyota.xlsx';
$objPHPExcel1 = PHPExcel_IOFactory::load($file1);
$objPHPExcel2 = PHPExcel_IOFactory::load($file2);
foreach($objPHPExcel2->getSheetNames() as $sheetName) {
$sheet = $objPHPExcel2->getSheetByName($sheetName);
$sheet->setTitle($sheet->getTitle());
$objPHPExcel1->addExternalSheet($sheet);
}
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="ford-toyota.xls"');
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel1,
'Excel2007');
$objWriter->save('php://output');
exit;
and error is :
Fatal error: Class 'Drupal\custom\Controller\PHPExcel_IOFactory' not found
Solution
I am not sure from your question which phpexcel library you are using, so there are potentially different answers, here is one:
1. On Packagist
If like in the case of mvlabs/mvlabs-phpexcel you would do the following:
on the command line:
composer require mvlabs/mvlabs-phpexcel
Then in the file where you are wanting to use it you can simply add a "Use" statement (as per this answer):
use ExternalPackage\namespace\Foo;
Drupal 8 does an auto-include and is "aware" of all the PHP libraries inside the vendor folder.