PhpOffice\PhpSpreadsheet不但可以操作Excel和导出Excel,也可以用来导出pdf文件。不过需要安装扩展,Tcpdf/Dompdf等三方类库,否则提示类库不存在。
目录
安装扩展
安装phpspreadsheet
composer require phpoffice/phpspreadsheet
安装tcpdf
用来导出pdf文件
composer require tecnickcom/tcpdf
因为环境已安装phpspreadsheet就不再展示。
安装tcpdf
创建模板
创建xls模板用于导出pdf
具体实现
查询数据
$key = ['id', 'product_name', 'product_desc', 'optionsNo', 'created_at'];
$data = Db::name('product')
->order('id', 'asc')
->field($key)->limit(0, 10)->select()->toArray();
处理数据
foreach ($data as &$v) {
$v['created_at'] = date('Y/m/d H:i:s', $v['created_at']);
}
unset($v);
加载文件
加载模板文件并赋值文件内容
$spreadsheet = IOFactory::load('./uploads/test1.xlsx');
$sheet = $spreadsheet->getActiveSheet();
// 处理标题 因为合并了 使用A1即可赋值
$sheet->setCellValue('A1', '产品导出数据');
// 处理内容从第三行开始
$row = 3;
foreach ($data as $item) {
$column = 1;
foreach ($item as $value) {
$sheet->setCellValueByColumnAndRow($column, $row, $value);
$column++;
}
$row++;
}
文件下载
文件下载使用tcpdf扩展生成pdf文件
$pdf = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Tcpdf');
设置支持中文
设置字体 stsongstdlight支持中文
$pdf->SetFont('stsongstdlight', '', 10);
保存文件
$filename = './uploads/product1.pdf';
$pdf->save($filename);
实现效果
总结
PhpSpreadsheet操作Excel文件很方便,还有很多操作没有举例,有需要的可查看官网。
如果安装的Tcpdf不支持中文,上述中文设置也没有效果,可以查看这篇文章。