解决方法如下所示:
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文件出现乱码的问题全部内容了,希望大家多多支持服务器之家~