我正在使用PHPSpreadsheet创建Excel。我想要生成Excel文件,然后将Excel文件转换为PDF文件。所以我做了以下几件事:
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf;
use PhpOffice\PhpSpreadsheet\Reader\Exception;
class DevisGenerator
{
public function runDevis()
{
$spreadsheet = $this->loadexcelTemplate();
$uuid = $this->uniqidReal();
$filename = $this->writeName($spreadsheet, $uuid);
$this->convertPdf($spreadsheet, $filename);
}
public function writeName($spreadsheet, $uuid)
{
$worksheet = $spreadsheet->getActiveSheet();
$worksheet->getCell('B2')->setValue('Toto');
try {
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$filename = $uuid;
$writer->save($filename.'.xlsx');
}catch (Exception $e)
{
//TODO gestion erreur
}
return $filename;
}
public function convertPdf($spreadsheet, $filename)
{
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);
$writer->save($filename.'.pdf');
}但是,当我运行该代码时,会出现以下错误:
试图从名称空间"Mpdf“加载类"Mpdf”。您忘记了"PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf“的"use”语句吗?
我不理解这个错误,我已经正确地在我的代码中插入了use语句。知道吗?
发布于 2020-05-29 09:19:36
我已经和Mpdf有类似的问题了。
PHPSpreadsheet支持多个Librairies生成PDF。
我是疯子使用Mpdf但是Tcpdf。我也不确定,但您需要手动安装它们。
composer需要tecnickcom/tcpdf
然后在您的代码中:
$writer = new Tcpdf($spreadsheet);不要忘记use语句;)
希望能帮上忙!
发布于 2020-05-29 07:46:16
在上课前使用语句之后,您应该只使用:
public function convertPdf($spreadsheet, $filename)
{
$writer = new Mpdf($spreadsheet);
$writer->save($filename.'.pdf');
}发布于 2020-05-29 07:53:53
因为在创建实例时使用了完全限定的命名空间,所以没有考虑use语句(因此是错误消息)。
在创建Mpdf实例时,您似乎在名称空间的开头添加了一个补充斜杠,删除它将解决您的问题。
$writer = new PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);但是,由于您已经添加了一个use语句,您不需要再次使用完全限定的命名空间,您可以这样做。
$writer = new Mpdf($spreadsheet);https://stackoverflow.com/questions/62081030
复制相似问题