BanzuiExcelExport.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace App\Exports;
  3. use App\Models\User;
  4. use Illuminate\Support\Facades\Log;
  5. use Maatwebsite\Excel\Concerns\FromCollection;
  6. use Maatwebsite\Excel\Concerns\WithEvents;
  7. use Maatwebsite\Excel\Concerns\WithHeadings;
  8. use Maatwebsite\Excel\Concerns\WithTitle;
  9. use Maatwebsite\Excel\Events\AfterSheet;
  10. class BanzuiExcelExport implements FromCollection, WithHeadings, WithEvents
  11. {
  12. protected $data;
  13. public function __construct($data){
  14. $this->data = $data;
  15. }
  16. public function collection()
  17. {
  18. return $this->data;
  19. }
  20. public function headings(): array
  21. {
  22. return['进货月份',
  23. '进货人(批发商)昵称',
  24. '进货人(批发商)手机号',
  25. '半醉浓香型件数',
  26. '半醉酱香型件数',
  27. '件数合计',
  28. '每件补助',
  29. '补助金额',
  30. '补助接收者昵称',
  31. '补助接收者手机号',
  32. '补助接收者身份'
  33. ];
  34. }
  35. public function setRowHeight(array $rouHeight)
  36. {
  37. $this->RowHeight=$rouHeight;
  38. }
  39. public function registerEvents(): array
  40. {
  41. return [
  42. AfterSheet::class => function(AfterSheet $event) {
  43. // 合并单元格,从 A1 到 C1
  44. $sheet = $event->sheet;
  45. // $sheet->mergeCells('A1:C1');
  46. // $sheet->setCellValue('A1','进货人信息');
  47. // 设置字体加粗、居中等样式
  48. // $sheet->getStyle('A1')->getFont()->setBold(true);
  49. // $sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
  50. //
  51. //// $sheet->mergeCells('D1:I1');
  52. //// $sheet->setCellValue('D1','进货数量及金额');
  53. //
  54. // // 设置字体加粗、居中等样式
  55. // $sheet->getStyle('D1')->getFont()->setBold(true);
  56. // $sheet->getStyle('D1')->getAlignment()->setHorizontal('center');
  57. //
  58. //// $sheet->mergeCells('J1:L1');
  59. //// $sheet->setCellValue('J1','拿补助的人信息');
  60. //
  61. //
  62. // // 设置字体加粗、居中等样式
  63. // $sheet->getStyle('J1')->getFont()->setBold(true);
  64. // $sheet->getStyle('J1')->getAlignment()->setHorizontal('center');
  65. //
  66. //// $sheet->mergeCells('M1:N1');
  67. //// $sheet->setCellValue('M1','补助明细及金额');
  68. //
  69. // $sheet->getStyle('M1')->getFont()->setBold(true);
  70. // $sheet->getStyle('M1')->getAlignment()->setHorizontal('center');
  71. //
  72. // $sheet->getColumnDimension('B')->setWidth(20);
  73. // $sheet->getColumnDimension('K')->setWidth(20);
  74. // $sheet->setHeight=20;
  75. $data = $this->data;
  76. for ($row = 0; $row <= count($data); $row++) {
  77. // 其他操作,如设置单元格值等
  78. if ($row === count($data)) {
  79. $sheet->mergeCells('A'. ($row + 1). ':F'. ($row + 1));
  80. $sheet->getStyle('A'. ($row + 1))->getAlignment()->setHorizontal('center');
  81. $sheet->setCellValue('A'. ($row + 1),'碱单半醉酒补助金额:'.$data[$row-1][0]);
  82. $sheet->mergeCells('G'. ($row + 1). ':K'. ($row + 1));
  83. $sheet->setCellValue('G'. ($row + 1),'补助发放时间及方式:'.$data[$row-1][1]);
  84. $sheet->getStyle('G'. ($row + 1))->getAlignment()->setHorizontal('center');
  85. }
  86. }
  87. $sheet->getStyle('A:K')->getAlignment()->setHorizontal('center');
  88. $sheet->getColumnDimension('A')->setWidth(20);
  89. $sheet->getColumnDimension('B')->setWidth(20);
  90. $sheet->getColumnDimension('C')->setWidth(20);
  91. $sheet->getColumnDimension('I')->setWidth(20);
  92. $sheet->getColumnDimension('J')->setWidth(20);
  93. },
  94. ];
  95. }
  96. }