|
|
@@ -55,37 +55,44 @@ class SingleSheetExport extends DefaultValueBinder implements FromCollection, Wi
|
|
|
return parent::bindValue($cell, $value);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 每页 Sheet 的样式
|
|
|
- */
|
|
|
public function styles(Worksheet $sheet)
|
|
|
{
|
|
|
$highestRow = $sheet->getHighestRow();
|
|
|
$highestColumn = $sheet->getHighestColumn();
|
|
|
+ $fullRange = 'A1:' . $highestColumn . $highestRow;
|
|
|
|
|
|
- // 1. 表头加粗、居中
|
|
|
- $sheet->getStyle('A1:' . $highestColumn . '1')->applyFromArray([
|
|
|
+ // 1. 设置全表(表头+表体)统一样式
|
|
|
+ $sheet->getStyle($fullRange)->applyFromArray([
|
|
|
'font' => [
|
|
|
- 'bold' => true,
|
|
|
- 'size' => 11,
|
|
|
+ 'name' => '宋体',
|
|
|
+ 'size' => 12,
|
|
|
+ 'bold' => false,
|
|
|
],
|
|
|
'alignment' => [
|
|
|
- 'horizontal' => Alignment::HORIZONTAL_CENTER,
|
|
|
'vertical' => Alignment::VERTICAL_CENTER,
|
|
|
+ 'horizontal' => Alignment::HORIZONTAL_CENTER, // 设置全表水平居中
|
|
|
],
|
|
|
'borders' => [
|
|
|
- 'bottom' => ['borderStyle' => Border::BORDER_THIN],
|
|
|
+ 'allBorders' => [
|
|
|
+ 'borderStyle' => Border::BORDER_THIN, // 给所有单元格加上细边框(可选)
|
|
|
+ 'color' => ['argb' => '000000'],
|
|
|
+ ],
|
|
|
],
|
|
|
]);
|
|
|
|
|
|
- // 2. 内容垂直居中
|
|
|
- $sheet->getStyle('A2:' . $highestColumn . $highestRow)
|
|
|
- ->getAlignment()
|
|
|
- ->setVertical(Alignment::VERTICAL_CENTER);
|
|
|
+ // 2. 针对表头(第一行)的特殊处理
|
|
|
+ // 如果全表已经居中且不加粗,这里主要用于确保表头有别于表体的样式(例如设置背景色或更粗的底边框)
|
|
|
+ $sheet->getStyle('A1:' . $highestColumn . '1')->applyFromArray([
|
|
|
+ 'borders' => [
|
|
|
+ 'bottom' => [
|
|
|
+ 'borderStyle' => Border::BORDER_MEDIUM, // 表头底部稍微加粗
|
|
|
+ ],
|
|
|
+ ],
|
|
|
+ ]);
|
|
|
|
|
|
// 3. 自动列宽
|
|
|
- foreach (range('A', $highestColumn) as $col) {
|
|
|
- $sheet->getColumnDimension($col)->setAutoSize(true);
|
|
|
+ foreach ($sheet->getColumnIterator() as $column) {
|
|
|
+ $sheet->getColumnDimension($column->getColumnIndex())->setAutoSize(true);
|
|
|
}
|
|
|
|
|
|
return [];
|