我正在使用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语句。有什么主意吗?
在上课前使用语句后,您只能使用:
public function convertPdf($spreadsheet, $filename)
{
$writer = new Mpdf($spreadsheet);
$writer->save($filename.'.pdf');
}
由于在创建实例时使用了完全限定的名称空间,所以不考虑use语句(因此出现错误消息)。>>
似乎您在创建Mpdf
实例时在名称空间的开头添加了一个斜杠,将其删除将解决您的问题。
$writer = new PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);
但是由于添加了
use
语句,因此无需再次使用完全限定的名称空间,可以执行此操作
$writer = new Mpdf($spreadsheet);
我已经有了Mpdf的类似问题。