$styleArray = [
'alignment' => [
'horizontal' => Alignment :: HORIZONTAL_CENTER ,
'vertical' => Alignment :: VERTICAL_CENTER
] ,
] ;
$border_style = [
'borders' => [
'allborders' => [
'style' => \ PHPExcel_Style_Border:: BORDER_THIN ,
]
]
] ;
$begin_date = $request -> begin_date ;
$end_date = $request -> end_date ;
$search = $request -> search_word ;
$arr_com = [ ] ;
if ( isset ( $request -> com_val ) ) {
$arr_com = explode ( ',' , $request -> com_val ) ;
}
$arr_fact = [ ] ;
if ( isset ( $request -> fact_val ) ) {
$arr_fact = explode ( ',' , $request -> fact_val ) ;
}
$res = $this -> getData ( $begin_date , $end_date , $search , $arr_com , $arr_fact , 0 , 0 ) ;
$data = $res [ 'data' ] ;
if ( count ( $data ) > 0 ) {
ob_end_clean ( ) ;
ob_start ( ) ;
$year = date ( 'Y' , strtotime ( $begin_date ) ) ;
$week = intval ( date ( 'W' , strtotime ( $begin_date ) ) ) ;
$filename = $year . '年' . $week . '周出货表' ;
$objPHPExcel = new \ PHPExcel( ) ;
$objPHPExcel -> getActiveSheet ( ) -> setTitle ( $filename ) ;
$objPHPExcel -> getActiveSheet ( ) -> getColumnDimension ( 'A' ) -> setWidth ( 10 ) ;
$objPHPExcel -> getActiveSheet ( ) -> getColumnDimension ( 'B' ) -> setWidth ( 30 ) ;
$objPHPExcel -> getActiveSheet ( ) -> getRowDimension ( '1' ) -> setRowHeight ( 40 ) ;
$objPHPExcel -> getActiveSheet ( ) -> getRowDimension ( '2' ) -> setRowHeight ( 20 ) ;
$objPHPExcel -> getActiveSheet ( ) -> getCell ( "A1" ) -> setValue ( $filename ) ;
$objPHPExcel -> getActiveSheet ( ) -> mergeCells ( 'A1:I1' ) ;
$objPHPExcel -> getActiveSheet ( ) -> getCell ( "A2" ) -> setValue ( '出货日期' ) ;
$richTextObj = new \ PHPExcel_RichText( ) ;
$setStyleObj = $richTextObj -> createTextRun ( "国别(海运/" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF000000" ) ) ;
$setStyleObj = $richTextObj -> createTextRun ( "空运" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FFFF0000" ) ) ;
$setStyleObj = $richTextObj -> createTextRun ( "/" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF000000" ) ) ;
$setStyleObj = $richTextObj -> createTextRun ( "陆运" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF00FF00" ) ) ;
$setStyleObj = $richTextObj -> createTextRun ( "/" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF000000" ) ) ;
$setStyleObj = $richTextObj -> createTextRun ( "铁路" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF0000FF" ) ) ;
$setStyleObj = $richTextObj -> createTextRun ( "/" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF000000" ) ) ;
$setStyleObj = $richTextObj -> createTextRun ( "海空" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FFFF00FF" ) ) ;
$setStyleObj = $richTextObj -> createTextRun ( ")" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF000000" ) ) ;
$objPHPExcel -> getActiveSheet ( ) -> getCell ( "E2" ) -> setValue ( $richTextObj ) ;
foreach ( $data as $key => $value ) {
$excelRow = ( $key + 3 ) ;
$objPHPExcel -> getActiveSheet ( ) -> getCell ( 'D' . $excelRow ) -> setValue ( $value [ 'tod_date' ] ) ;
$richTextObjNation = new \ PHPExcel_RichText( ) ;
$count_nation = count ( $value [ 'nations' ] ) ;
foreach ( $value [ 'nations' ] as $k_nation => $v_nation ) {
if ( $v_nation [ 'flag' ] == 0 ) {
$setStyleObj = $richTextObjNation -> createTextRun ( $v_nation [ 'name' ] ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF000000" ) ) ;
if ( $k_nation != $count_nation - 1 ) {
$setStyleObj = $richTextObjNation -> createTextRun ( "、" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF000000" ) ) ;
}
}
if ( $v_nation [ 'flag' ] == 1 ) {
$setStyleObj = $richTextObjNation -> createTextRun ( $v_nation [ 'name' ] ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FFFF0000" ) ) ;
if ( $k_nation != $count_nation - 1 ) {
$setStyleObj = $richTextObjNation -> createTextRun ( "、" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF000000" ) ) ;
}
}
if ( $v_nation [ 'flag' ] == 2 ) {
$setStyleObj = $richTextObjNation -> createTextRun ( $v_nation [ 'name' ] ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF00FF00" ) ) ;
if ( $k_nation != $count_nation - 1 ) {
$setStyleObj = $richTextObjNation -> createTextRun ( "、" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF000000" ) ) ;
}
}
if ( $v_nation [ 'flag' ] == 3 ) {
$setStyleObj = $richTextObjNation -> createTextRun ( $v_nation [ 'name' ] ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF0000FF" ) ) ;
if ( $k_nation != $count_nation - 1 ) {
$setStyleObj = $richTextObjNation -> createTextRun ( "、" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF000000" ) ) ;
}
}
if ( $v_nation [ 'flag' ] == 4 ) {
$setStyleObj = $richTextObjNation -> createTextRun ( $v_nation [ 'name' ] ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FFFF00FF" ) ) ;
if ( $k_nation != $count_nation - 1 ) {
$setStyleObj = $richTextObjNation -> createTextRun ( "、" ) ;
$setStyleObj -> getFont ( ) -> setColor ( new \ PHPExcel_Style_Color( "FF000000" ) ) ;
}
}
}
$objPHPExcel -> getActiveSheet ( ) -> getCell ( 'E' . $excelRow ) -> setValue ( $richTextObjNation ) ;
$objPHPExcel -> getActiveSheet ( ) -> getRowDimension ( $excelRow ) -> setRowHeight ( 20 ) ;
$objPHPExcel -> getActiveSheet ( ) -> getStyle ( 'E' . $excelRow ) -> getAlignment ( ) -> setWrapText ( true ) ;
}
$objPHPExcel -> getActiveSheet ( ) -> getStyle ( 'A1:I2' ) -> applyFromArray ( $styleArray ) ;
$objPHPExcel -> getActiveSheet ( ) -> getStyle ( 'A2:I' . $excelRow ) -> applyFromArray ( $border_style ) ;
$objPHPExcel -> getActiveSheet ( ) -> getStyle ( 'A1:I1' ) -> getFont ( ) -> setBold ( true ) -> setName ( '黑体' ) -> setSize ( 16 ) ;
$objPHPExcel -> getActiveSheet ( ) -> getStyle ( 'A2:I2' ) -> getFont ( ) -> setBold ( true ) -> setName ( '宋体' ) -> setSize ( 12 ) ;
ob_end_clean ( ) ;
header ( 'Content-Type: application/vnd.ms-excel' ) ;
header ( 'Content-Disposition: attachment;filename="' . $filename . '.xls' ) ;
header ( 'Cache-Control: max-age=0' ) ;
header ( 'Content-Type: text/html; charset=utf-8' ) ;
$objWriter = \ PHPExcel_IOFactory:: createWriter ( $objPHPExcel , "Excel2007" ) ;
$objWriter -> save ( 'php://output' ) ;
exit ;
}
else {
return response ( ) -> json ( [ 'code' => 1 , 'msg' => '没有数据' ] ) ;
}