php laravel spreadsheet 导出多sheet操作
如何使用php spreadsheet 导出多sheet操作
phpspreadsheet是phpexcel的进阶版 , 目前技术文档较少 , 在实际应用中遇到导出多sheet的情况尝试之后找到解决方案,如下:
下面展示一些 内联代码片
。
// An highlighted block
public function exportPost(){
$spreadsheet = new Spreadsheet();
$exPortData = $this->exPortData();
self::setSheet($exPortData, $spreadsheet);
$fileName = 'test.xlsx';
$writer = new Xlsx($spreadsheet);
$fileUrl = $fileName;
$writer->save($fileUrl);
die;
}
public static function setSheet($data, $spreadsheet)
{
foreach ($data as $sheetKey => $sheetValue) {
//设置所操纵的sheet
$sheet = $spreadsheet->createSheet($sheetKey)->setTitle($sheetValue['sheet_title']);
//创建设置header
foreach ($sheetValue['header'] as $hk => $hv) {
$sheet->setCellValue($hk . (1), $hv);
}
//获取所需的列
$cellName = array_keys($sheetValue['header']);
$i = 1;
//处理导出数据
foreach ($sheetValue['export_data'] as $v) {
$i++;
//循环设置列所需要的值
foreach ($cellName as $name) {
$sheet->setCellValue($name . $i, $v[$sheetValue['keys'][$name]]);
}
}
}
}
public function exPortData(){
$data = [
[
'header' => ['A' => '标题11', 'B' => '标题11', 'C' => '标题11'],
'keys' => ['A' => 'data', 'B' => 'data', 'C' => 'raw_text'],
'sheet_title' => '123',
'export_data' => [
[
'data' => '1111',
'raw_text' => 2222
],
[
'data' => '2222',
'raw_text' => 3333
],
[
'data' => '3333',
'raw_text' => 3333
]
]
], [
'header' => ['A' => '标题22', 'B' => '标题22', 'C' => '标题22'],
'keys' => ['A' => 'data', 'B' => 'data', 'C' => 'raw_text'],
'sheet_title' => '223',
'export_data' => [
[
'data' => '1111',
'raw_text' => 2222
],
[
'data' => '2222',
'raw_text' => 3333
],
[
'data' => '3333',
'raw_text' => 3333
]
]
]
];
return $data;
}
好了 以上就是我的Excel多sheet导出,有帮助的可以点个赞哈哈