CommonExport.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace App\Exports;
  3. use PhpOffice\PhpSpreadsheet\Style\Border;
  4. use PhpOffice\PhpSpreadsheet\Style\Fill;
  5. class CommonExport
  6. {
  7. protected function setCellWidth($event, $cells)
  8. {
  9. //设置列宽
  10. $event->sheet->getDelegate()->getColumnDimension('A')->setWidth(5);
  11. $event->sheet->getDelegate()->getColumnDimension('B')->setWidth(35);
  12. $event->sheet->getDelegate()->getColumnDimension('C')->setWidth(30);
  13. $event->sheet->getDelegate()->getColumnDimension('D')->setWidth(25);
  14. $event->sheet->getDelegate()->getColumnDimension('E')->setWidth(25);
  15. $event->sheet->getDelegate()->getColumnDimension('F')->setWidth(20);
  16. $event->sheet->getDelegate()->getColumnDimension('G')->setWidth(20);
  17. $event->sheet->getDelegate()->getColumnDimension('H')->setWidth(20);
  18. $event->sheet->getDelegate()->getColumnDimension('I')->setWidth(20);
  19. $event->sheet->getDelegate()->getColumnDimension('J')->setWidth(20);
  20. $event->sheet->getDelegate()->getColumnDimension('K')->setWidth(20);
  21. $event->sheet->getDelegate()->getColumnDimension('L')->setWidth(20);
  22. $event->sheet->getDelegate()->getColumnDimension('M')->setWidth(20);
  23. $event->sheet->getDelegate()->getColumnDimension('N')->setWidth(20);
  24. $event->sheet->getDelegate()->getColumnDimension('O')->setWidth(20);
  25. $event->sheet->getDelegate()->getColumnDimension('P')->setWidth(20);
  26. $event->sheet->getDelegate()->getColumnDimension('Q')->setWidth(20);
  27. $event->sheet->getDelegate()->getColumnDimension('R')->setWidth(20);
  28. $event->sheet->getDelegate()->getColumnDimension('S')->setWidth(20);
  29. for ($i = 0; $i <= 1000; $i++) {
  30. $event->sheet->getDelegate()->getRowDimension($i)->setRowHeight(30);
  31. }
  32. foreach ($cells as $k => $v) {
  33. //设置区域单元格垂直居中
  34. $event->sheet->getDelegate()->getStyle($v)->getAlignment()->setVertical('center');
  35. //设置区域单元格水平居中
  36. $event->sheet->getDelegate()->getStyle($v)->getAlignment()->setHorizontal('center');
  37. $event->sheet->getDelegate()->mergeCells($v);
  38. }
  39. }
  40. protected function setCellColor($cells, $event, $rgb = 'acc8cc')
  41. {
  42. foreach ($cells as $cell) {
  43. //设置区域单元格字体、颜色、背景等,其他设置请查看 applyFromArray 方法,提供了注释
  44. $event->sheet->getDelegate()->getStyle($cell)->applyFromArray([
  45. 'font' => [
  46. 'name' => 'Arial',
  47. 'bold' => true,
  48. 'italic' => false,
  49. 'strikethrough' => false,
  50. 'color' => [
  51. 'rgb' => '000000'
  52. ]
  53. ],
  54. 'fill' => [
  55. 'fillType' => Fill::FILL_SOLID, //线性填充,类似渐变
  56. 'rotation' => 0, //渐变角度
  57. 'startColor' => [
  58. 'rgb' => $rgb //初始颜色
  59. ],
  60. //结束颜色,如果需要单一背景色,请和初始颜色保持一致
  61. 'endColor' => [
  62. 'argb' => $rgb
  63. ]
  64. ]
  65. ]);
  66. }
  67. }
  68. protected function setCellColorBorders($cells, $event)
  69. {
  70. foreach ($cells as $cell) {
  71. $event->sheet->getDelegate()->getStyle($cell)->getBorders()->applyFromArray(
  72. [
  73. 'allBorders' => [
  74. 'borderStyle' => Border::BORDER_THIN,
  75. 'color' => [
  76. 'rgb' => '5F9EA0'
  77. ]
  78. ]
  79. ]
  80. );
  81. }
  82. }
  83. }