During development, it is often necessary to use PHP to generate Excel files and provide them for users to download. However, many times we encounter a problem, that is, garbled characters appear during Chinese output. Below we will introduce the causes and solutions of Chinese garbled characters.
1. Cause Analysis
The generation of Chinese garbled characters is mainly caused by the inconsistent character sets of the files. When we output the Excel file generated by PHP to the browser, we need to specify the output character set, and the character set of the Excel file must be consistent with the output character set, otherwise garbled characters will appear.
2. Solution
In the PHP file, we need to set the character set of the file. Usually the UTF-8 character set is used more. You can add the following code to the PHP code:
header("Content-Type:text/html;charset=utf-8");
When generating an Excel file, we need to set the character set of the file to output The character set is consistent. You can set the character set of the Excel file by calling the method provided by the PHPExcel library. The sample code is as follows:
<?php require_once 'PHPExcel.php'; //新建一个PHPExcel对象 $objPHPExcel = new PHPExcel(); //设置文件属性 $objPHPExcel->getProperties() ->setCreator("Maarten Balliauw") ->setLastModifiedBy("Maarten Balliauw") ->setTitle("PHPExcel Test Document") ->setSubject("PHPExcel Test Document") ->setDescription("Test document for PHPExcel, generated using PHP classes.") ->setKeywords("office PHPExcel php") ->setCategory("Test result file"); //设置当前的sheet $objPHPExcel->setActiveSheetIndex(0); //向Excel中写入数据 $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello'); $objPHPExcel->getActiveSheet()->setCellValue('B1', 'World!'); $objPHPExcel->getActiveSheet()->setCellValue('C1', '中文测试'); //设置Excel的字符集 $objPHPExcel->getActiveSheet() ->setTitle('PHPExcel Test Document') ->getComment('C1') ->setAuthor('PHPExcel') ->setText('Test document for PHPExcel, generated using PHP classes.') ->getText()->getFont() ->setColor(new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLUE)) ->setBold(true) ->setSize(14) ->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); //设置Excel的输出格式 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="test.xls"'); header('Cache-Control: max-age=0'); //将Excel文件输出到浏览器 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output');
In the above code, we configure the Excel file by calling the method of setting file properties provided by the PHPExcel object. Then set the current sheet as the first one by calling the setActiveSheetIndex method provided by the PHPExcel object, and write data to Excel by calling the setCellValue method. Next, we get the current sheet by calling the getActiveSheet method, then call the setTitle method to set the file's Title, and get the comment of the current cell by calling the getComment method, and use the setText method to set the attribute value for the Font property of the comment and set Excel character set. Finally, the Excel file is output to the browser by calling the header method.
The above is a solution to the problem of Chinese garbled characters when downloading Excel files with PHP. By setting the character set of the file, the effect of avoiding garbled characters can be achieved.
The above is the detailed content of How to solve the Chinese garbled code when downloading Excel in PHP. For more information, please follow other related articles on the PHP Chinese website!