Home  >  Article  >  Backend Development  >  How to solve the Chinese garbled code when downloading Excel in PHP

How to solve the Chinese garbled code when downloading Excel in PHP

PHPz
PHPzOriginal
2023-04-06 09:14:431221browse

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

  1. Character set setting of PHP file

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");
  1. Character set setting of Excel file

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 &#39;PHPExcel.php&#39;;

    //新建一个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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn