解决方法如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
<?php
include 'global.php' ;
$ids = $_GET [ 'ids' ];
$sql = "select * from crm_cost_end where id in ( {$ids} )" ;
$result = $db ->findAll( $sql );
//echo $result[1]['sn'];
//创建一个excel对象
$objPHPExcel = new PHPExcel();
// Set properties
$objPHPExcel ->getProperties()->setCreator( "ctos" )
->setLastModifiedBy( "ctos" )
->setTitle( "Office 2007 XLSX Test Document" )
->setSubject( "Office 2007 XLSX Test Document" )
->setDescription( "Test document for Office 2007 XLSX, generated using PHP classes." )
->setKeywords( "office 2007 openxml php" )
->setCategory( "Test result file" );
//set width
$objPHPExcel ->getActiveSheet()->getColumnDimension( 'A' )->setWidth(8);
$objPHPExcel ->getActiveSheet()->getColumnDimension( 'B' )->setWidth(10);
$objPHPExcel ->getActiveSheet()->getColumnDimension( 'C' )->setWidth(25);
$objPHPExcel ->getActiveSheet()->getColumnDimension( 'D' )->setWidth(12);
$objPHPExcel ->getActiveSheet()->getColumnDimension( 'E' )->setWidth(50);
$objPHPExcel ->getActiveSheet()->getColumnDimension( 'F' )->setWidth(10);
$objPHPExcel ->getActiveSheet()->getColumnDimension( 'G' )->setWidth(12);
$objPHPExcel ->getActiveSheet()->getColumnDimension( 'H' )->setWidth(12);
$objPHPExcel ->getActiveSheet()->getColumnDimension( 'I' )->setWidth(12);
$objPHPExcel ->getActiveSheet()->getColumnDimension( 'J' )->setWidth(30);
//设置行高度
$objPHPExcel ->getActiveSheet()->getRowDimension( '1' )->setRowHeight(22);
$objPHPExcel ->getActiveSheet()->getRowDimension( '2' )->setRowHeight(20);
//set font size bold
$objPHPExcel ->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10);
$objPHPExcel ->getActiveSheet()->getStyle( 'A2:J2' )->getFont()->setBold(true);
$objPHPExcel ->getActiveSheet()->getStyle( 'A2:J2' )->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel ->getActiveSheet()->getStyle( 'A2:J2' )->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//设置水平居中
$objPHPExcel ->getActiveSheet()->getStyle( 'A1' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$objPHPExcel ->getActiveSheet()->getStyle( 'A' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel ->getActiveSheet()->getStyle( 'B' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel ->getActiveSheet()->getStyle( 'D' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel ->getActiveSheet()->getStyle( 'F' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel ->getActiveSheet()->getStyle( 'G' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel ->getActiveSheet()->getStyle( 'H' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel ->getActiveSheet()->getStyle( 'I' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//
$objPHPExcel ->getActiveSheet()->mergeCells( 'A1:J1' );
// set table header content
$objPHPExcel ->setActiveSheetIndex(0)
->setCellValue( 'A1' , '订单数据汇总 时间:' . date ( 'Y-m-d H:i:s' ))
->setCellValue( 'A2' , '订单ID' )
->setCellValue( 'B2' , '下单人' )
->setCellValue( 'C2' , '客户名称' )
->setCellValue( 'D2' , '下单时间' )
->setCellValue( 'E2' , '需求机型' )
->setCellValue( 'F2' , '需求数量' )
->setCellValue( 'G2' , '需求交期' )
->setCellValue( 'H2' , '确认BOM料号' )
->setCellValue( 'I2' , 'PMC确认交期' )
->setCellValue( 'J2' , 'PMC交货备注' );
// Miscellaneous glyphs, UTF-8
for ( $i = 0; $i < count ( $result ) - 1; $i ++) {
$objPHPExcel ->getActiveSheet(0)->setCellValue( 'A' . ( $i + 3), $result [ $i ][ 'id' ]);
$objPHPExcel ->getActiveSheet(0)->setCellValue( 'B' . ( $i + 3), $result [ $i ][ 'realname' ]);
$objPHPExcel ->getActiveSheet(0)->setCellValue( 'C' . ( $i + 3), $result [ $i ][ 'customer_name' ]);
$objPHPExcel ->getActiveSheet(0)->setCellValue( 'D' . ( $i + 3), $OrdersData [ $i ][ 'create_time' ]);
$objPHPExcel ->getActiveSheet(0)->setCellValue( 'E' . ( $i + 3), $result [ $i ][ 'require_product' ]);
$objPHPExcel ->getActiveSheet(0)->setCellValue( 'F' . ( $i + 3), $result [ $i ][ 'require_count' ]);
$objPHPExcel ->getActiveSheet(0)->setCellValue( 'G' . ( $i + 3), $result [ $i ][ 'require_time' ]);
$objPHPExcel ->getActiveSheet(0)->setCellValue( 'H' . ( $i + 3), $result [ $i ][ 'product_bom_encoding' ]);
$objPHPExcel ->getActiveSheet(0)->setCellValue( 'I' . ( $i + 3), $result [ $i ][ 'delivery_time' ]);
$objPHPExcel ->getActiveSheet(0)->setCellValue( 'J' . ( $i + 3), $result [ $i ][ 'delivery_memo' ]);
$objPHPExcel ->getActiveSheet()->getStyle( 'A' . ( $i + 3) . ':J' . ( $i + 3))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel ->getActiveSheet()->getStyle( 'A' . ( $i + 3) . ':J' . ( $i + 3))->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel ->getActiveSheet()->getRowDimension( $i + 3)->setRowHeight(16);
}
// Rename sheet
$objPHPExcel ->getActiveSheet()->setTitle( '订单汇总表' );
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel ->setActiveSheetIndex(0);
// Redirect output to a client's web browser (Excel5)
header( 'Content-Type: application/vnd.ms-excel' );
header( 'Cache-Control: max-age=0' );
$objWriter = PHPExcel_IOFactory::createWriter( $objPHPExcel , 'Excel5' );
$objWriter ->save( 'php://output' );
?>
|
在header() 前面加上ob_end_clean() 函数,清除缓冲区, 这样就不会乱码了!
以上就是小编为大家带来的完美解决phpexcel导出到xls文件出现乱码的问题全部内容了,希望大家多多支持服务器之家~