新聞動態

                                                                                  位置:首頁 新聞動態 常見問題

                                                                                  thinkphp6 導出Excel表單

                                                                                  新聞動態
                                                                                  2022年06月01日 閱讀:3033次

                                                                                   1.下載安裝地址 https://github.com/PHPOffice/PhpSpreadsheet

                                                                                  2. 引用 

                                                                                  use PhpOffice\PhpSpreadsheet\Spreadsheet;
                                                                                  use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
                                                                                  use PhpOffice\PhpSpreadsheet\IOFactory;

                                                                                  3.實例化

                                                                                  $phpexcel=new Spreadsheet();
                                                                                  $phpexcel->setActiveSheetIndex(0);
                                                                                  $sheet=$phpexcel->getActiveSheet();

                                                                                  4.數據組合

                                                                                  $sheet->setTitle('訂單明細');
                                                                                  $sheet->setCellValue('A1','姓名')
                                                                                      ->setCellValue('B1','手機號')
                                                                                      ->setCellValue('C1','訂單號')
                                                                                      ->setCellValue('D1','收貨信息')
                                                                                      ->setCellValue('F1','屬性')
                                                                                      ->setCellValue('G1','金額')
                                                                                      ->setCellValue('D2','收貨人')
                                                                                      ->setCellValue('E2','地址')
                                                                                      ->setCellValue('G2','支付金額')
                                                                                      ->setCellValue('H2','優惠劵')
                                                                                      ->setCellValue('I2','會員優惠')
                                                                                      ->setCellValue('J1','訂單生成時間')
                                                                                      ->setCellValue('K1','完成時間')
                                                                                  ->setCellValue('L1','訂單狀態')
                                                                                      ->setCellValue('M1','會員號')
                                                                                      ->setCellValue('N1','商品名稱')
                                                                                      ->setCellValue('O1','商品規格');
                                                                                  
                                                                                  
                                                                                  $sheet->getStyle('A1:O2')->getAlignment()->setHorizontal( \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
                                                                                  $sheet->getStyle('A1:O2')->getAlignment()->setVertical( \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER);
                                                                                  $sheet->mergeCells('A1:A2')
                                                                                      ->mergeCells('B1:B2')
                                                                                      ->mergeCells('C1:C2')
                                                                                      ->mergeCells('D1:E1')
                                                                                      ->mergeCells('F1:F2')
                                                                                      ->mergeCells('G1:I1')
                                                                                      ->mergeCells('J1:J2')
                                                                                      ->mergeCells('K1:K2')
                                                                                      ->mergeCells('M1:M2')
                                                                                      ->mergeCells('N1:N2')
                                                                                      ->mergeCells('O1:O2')
                                                                                  ->mergeCells('L1:L2');
                                                                                  $sheet->getStyle('A1:O2')->getFont()->setBold(true);
                                                                                  $sheet->getStyle('G1:I2')->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED);
                                                                                  
                                                                                  
                                                                                  $sheet->getRowDimension(1)->setRowHeight(18);
                                                                                  $sheet->getRowDimension(2)->setRowHeight(18);
                                                                                  $sheet->getColumnDimension('A')->setWidth(12);
                                                                                  $sheet->getColumnDimension('B')->setAutoSize(true);
                                                                                  $sheet->getColumnDimension('C')->setAutoSize(true);
                                                                                  $sheet->getColumnDimension('J')->setAutoSize(true);
                                                                                  $sheet->getColumnDimension('K')->setAutoSize(true);
                                                                                  $sheet->getColumnDimension('L')->setWidth(12);
                                                                                  $sheet->getColumnDimension('D')->setWidth(12);
                                                                                  $sheet->getColumnDimension('E')->setWidth(30);
                                                                                  $sheet->getStyle('E')->getAlignment()->setWrapText(true);
                                                                                  $sheet->getColumnDimension('O')->setWidth(25);
                                                                                  $sheet->getColumnDimension('N')->setWidth(30);
                                                                                  $sheet->getStyle('N')->getAlignment()->setWrapText(true);
                                                                                  $currow=0;
                                                                                  foreach ($res as $key=>$v){
                                                                                      $currow=$key+3;
                                                                                      $sheet->setCellValue('A'.$currow,$v['address']['name'])
                                                                                          ->setCellValue('B'.$currow,$v['address']['phone'])
                                                                                          ->setCellValue('C'.$currow,' '.$v['out_trade_no'])
                                                                                          ->setCellValue('D'.$currow,$v['address']['name'])
                                                                                          ->setCellValue('E'.$currow,$v['address']['address'].$v['address']['detail'])
                                                                                          ->setCellValue('F'.$currow,$v['attr'])
                                                                                          ->setCellValue('G'.$currow,$v['amount'])
                                                                                          ->setCellValue('H'.$currow,$v['goods_tag'])
                                                                                          ->setCellValue('I'.$currow,$v['price_popu'])
                                                                                          ->setCellValue('J'.$currow,$v['time'])
                                                                                          ->setCellValue('K'.$currow,$v['status_time'])
                                                                                          ->setCellValue('L'.$currow,status($v['status']))
                                                                                          ->setCellValue('M'.$currow,$v['payer'])
                                                                                          ->setCellValue('N'.$currow,$v['description'])
                                                                                          ->setCellValue('O'.$currow,attr($v['attr']).'-'.$v['uid'].'-'.$v['pid'].'-'.'購買件數'.$v['num']);
                                                                                  }
                                                                                  
                                                                                  $sheet->setCellValue('A'.($currow+1),"合計");
                                                                                  $sheet->setCellValue('B'.($currow+1),"=sum(G3:G".$currow.")");
                                                                                  $sheet->setCellValue('C'.($currow+1),"完成交易額");
                                                                                  $sheet->setCellValue('D'.($currow+1),$this->status(3));
                                                                                  $sheet->setCellValue('E'.($currow+1),"待發貨");
                                                                                  $sheet->setCellValue('F'.($currow+1),$this->status(1));
                                                                                  $sheet->setCellValue('G'.($currow+1),"退款金額");
                                                                                  $sheet->setCellValue('H'.($currow+1),$this->status('4,5,6,7'));
                                                                                  $sheet->setCellValue('I'.($currow+1),"待簽收");
                                                                                  $sheet->setCellValue('J'.($currow+1),$this->status('2'));
                                                                                  
                                                                                  $style_array = array(
                                                                                  
                                                                                      'borders' => array(
                                                                                  
                                                                                          'allborders' => array(
                                                                                  
                                                                                              'style' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN
                                                                                  
                                                                                          )
                                                                                  
                                                                                      )                                                                                                                                                       );
                                                                                  
                                                                                  
                                                                                  $sheet->getStyle('A1:O'.($currow+1))->applyFromArray($style_array);
                                                                                  
                                                                                  $time=date('Y-m-d', time());
                                                                                  $filename="訂單詳情".$time;
                                                                                  $this->excelsave($phpexcel,$filename,'Xls');

                                                                                  5.瀏覽器下載

                                                                                  protected function excelsave($phpexcel,$filename,$format){
                                                                                      // $format只能為 Xlsx 或 Xls
                                                                                      if ($format == 'Xlsx') {
                                                                                          header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
                                                                                      } elseif ($format == 'Xls') {
                                                                                          header('Content-Type: application/vnd.ms-excel');
                                                                                      }
                                                                                  
                                                                                      header("Content-Disposition: attachment;filename="
                                                                                          . $filename . date('Y-m-d') . '.' . strtolower($format));
                                                                                      header('Cache-Control: max-age=0');
                                                                                      $objWriter = IOFactory::createWriter($phpexcel, $format);
                                                                                  
                                                                                      $objWriter->save('php://output');
                                                                                  
                                                                                  
                                                                                  
                                                                                  }

                                                                                  上一篇

                                                                                  下一篇

                                                                                  關鍵詞: 導出Excel
                                                                                  亚洲中文字幕在线19页_99久久国产精品免费热7788_欧美专区日韩专区综合专区_小泽玛利亚一区_gogo999亚洲肉体艺术