Home >Backend Development >PHP Problem >How to solve the problem of garbled characters in excel files exported by php

How to solve the problem of garbled characters in excel files exported by php

藏色散人
藏色散人Original
2020-07-22 09:31:292940browse

The solution to garbled php exported excel files: first process the relevant script data; then add the "ob_end_clean()" function before outputting the excel file. This function is used to clear the buffer and close the output buffer.

How to solve the problem of garbled characters in excel files exported by php

php export excel file garbled problem

Using PHP to export excel documents, sometimes The exported data will appear garbled inexplicably. Now I recommend a universal repair method

Without further ado, let’s go directly to the code

The core is to add ob_end_clean(() before outputting the excel file after processing the data. ) function; see the sample code for details, only part of the code is listed here

foreach ($licenseList as $key => $item) {
                    $objPHPExcel->setActiveSheetIndex(0)
                        ->setCellValue('A' . ($key + 2), $item["company_name"])
                        ->setCellValue('B' . ($key + 2), $item["user_name"])
                        ->setCellValue('C' . ($key + 2), $item["order_number"])
                        ->setCellValue('D' . ($key + 2), $item['apply_type']==2 ? 'official':'trial')
                        ->setCellValue('E' . ($key + 2), $item["license_key"])
                        ->setCellValue('F' . ($key + 2), $statusArr[$item['license_status']])->setCellValue('G' . ($key + 2), $item["user_email"])
                        ->setCellValue('H' . ($key + 2), date('y/m/d H:i:s', strtotime($item['insert_time'])));
                }

                $objPHPExcel->getActiveSheet()->setTitle('Simple');
                $objPHPExcel->setActiveSheetIndex(0);
                ob_end_clean();//解决乱码核心 就在此处添加此函数
                header('Content-Type: application/vnd.ms-excel');
                header('Content-Disposition: attachment;filename="test_list.xls"');
                header('Cache-Control: max-age=0');
                header('Cache-Control: max-age=1');
                header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
                header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
                header('Cache-Control: cache, must-revalidate');
                header('Pragma: public');

                $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
                $objWriter->save('php://output');
                exit;

As shown in the red marked code above, if this method still does not work, please try to use the iconv() function, the specific use will not be explained in detail here. Please recommend on Baidu

: "PHP Tutorial"

Related introduction:

ob_end_clean — Clear (erase) the buffer and close the output buffer

Description

ob_end_clean (void): bool

This function discards the contents of the top-level output buffer and closes the buffer. If you want to further process the contents of the buffer, you must call ob_get_contents() before ob_end_clean(), because the buffer contents will be discarded when ob_end_clean() is called.

Return value

Returns TRUE on success, or FALSE on failure. The first reason for the error is that there is no active buffer at the time of the call, or the buffer cannot be deleted for some reason (perhaps for a special buffer).

Error/Exception

If the function fails, an E_NOTICE exception will be raised.

The above is the detailed content of How to solve the problem of garbled characters in excel files exported by 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