MemberExport.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Admin\Exports\Person;
  3. use App\Admin\Exports\RowExport;
  4. use Illuminate\Database\Eloquent\Model;
  5. use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
  6. class MemberExport extends RowExport
  7. {
  8. /**
  9. * 设置标题,返回标题数组
  10. * @return array
  11. */
  12. public function headings(): array
  13. {
  14. return [
  15. '编号',
  16. '用户名',
  17. '姓名',
  18. '性别',
  19. '身份证',
  20. '手机号码',
  21. '籍贯',
  22. '所属分站',
  23. '注册时间',
  24. ];
  25. }
  26. /**
  27. * 处理行数据
  28. * @param Model $row
  29. * @return array
  30. */
  31. public function map($row): array
  32. {
  33. $result['id'] = $row->id;
  34. $result['username'] = $row->username;
  35. $result['realname'] = $row->memberInfo ? $row->memberInfo->realname : '';
  36. $result['sex_cn'] = $row->memberInfo? $row->memberInfo->sex_cn : '';
  37. if($row->memberInfo && $row->memberInfo->card_t_cn==306){
  38. $result['id_card'] = "\t".$row->memberInfo->id_card;
  39. }else{
  40. $result['id_card'] = '';
  41. }
  42. $result['mobile'] = $row->mobile;
  43. $result['householdaddress_cn'] = $row->memberInfo ? $row->memberInfo->householdaddress_cn : '';
  44. $result['subsite_id'] = $row->subsite_id==0?"总站":get_subsite_sitename($row->subsite_id);
  45. $result['created_at'] = $row->created_at;
  46. return $result;
  47. }
  48. /**
  49. * 设置文件名
  50. * @return string
  51. */
  52. public function getFilename(): string
  53. {
  54. return "member.xlsx";
  55. }
  56. /**
  57. * 格式化指定列.
  58. * 只有在需要的时候设置,例如在身份证不要显示科学计数时设定列格式:['A'=>NumberFormat::FORMAT_NUMBER]
  59. * @return array
  60. */
  61. public function columnFormats(): array
  62. {
  63. return [
  64. 'E'=>NumberFormat::FORMAT_NUMBER
  65. ];
  66. }
  67. }