Laravel Excel 设置工作表的打印页眉和页脚
时间: 2024-10-02 20:02:53 浏览: 30
python批量设置多个Excel文件页眉页脚的脚本
在Laravel Excel中设置工作表的打印页眉和页脚,你可以通过`Maatwebsite\Excel\Writers\Excel5Writer` 和 `Maatwebsite\Excel\Writers\XlsxWriter` 提供的模板功能来实现。以下是步骤:
1. 首先,你需要引入相关的依赖项,并创建一个新的Excel Writer实例:
```php
use Maatwebsite\Excel\Facades\Excel;
use Maatwebsite\Excel\Writers\XlsxWriter;
// 创建Excel writer实例,这里以XlsxWriter为例
$writer = new XlsxWriter();
```
2. 然后,你可以创建一个包含页眉和页脚信息的视图文件,例如`print-header.blade.php`和`print-footer.blade.php`。在这个视图里,你可以添加HTML或你想要的数据。
```html
<!-- print-header.blade.php -->
<table>
<tr>
<td>头文字</td>
<td>头文字2</td>
</tr>
</table>
<!-- print-footer.blade.php -->
<table>
<tr>
<td>页脚文字</td>
<td>页脚文字2</td>
</tr>
</table>
```
3. 将这些视图渲染到Excel模板中:
```php
$headerViewPath = 'print-header';
$footerViewPath = 'print-footer';
$header = view($headerViewPath)->render();
$footer = view($footerViewPath)->render();
// 设置页眉和页脚
$writer->getActiveSheet()->setPrintHeader(true);
$writer->getActiveSheet()->getStyle('1::')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style Alignment::HORIZONTAL_CENTER);
$writer->getActiveSheet()->getRowDimension(1)->setRowHeightByPercent(60); // 控制页眉高度
$writer->getActiveSheet()->setPrintFooter(true);
$writer->getActiveSheet()->getStyle('end:end')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style Alignment::HORIZONTAL_CENTER);
$writer->getActiveSheet()->getRowDimension(end(range(1, $writer->getActiveSheet()->getHighestRow())))->setRowHeightByPercent(40); // 控制页脚高度
```
4. 最后,保存并返回Excel文件:
```php
// 将视图数据转换为Excel内容
$data = ...; // 你的数据
$objPHPExcel = Excel::create('报表名称', function ($excel) use ($data, $writer, $header, $footer) {
$excel->setTitle('报表标题');
// 添加数据...
$excel->getActiveSheet()->fromArray($data);
// 写入页眉和页脚
$excel->getActiveSheet()->setCellValue('A1', $header);
$excel->getActiveSheet()->mergeCells('A1:B1');
$excel->getActiveSheet()->setCellValue('A' . (count($data[0]) + 2), $footer);
$excel->getActiveSheet()->mergeCells('A' . (count($data[0]) + 2) . ':' . end(range('A', 'Z')) . (count($data[0]) + 2));
})->export('xlsx'); // 返回下载链接
```
阅读全文