Maison  >  Article  >  développement back-end  >  Comment résoudre le problème des caractères tronqués dans les fichiers Excel exportés par php

Comment résoudre le problème des caractères tronqués dans les fichiers Excel exportés par php

藏色散人
藏色散人original
2020-07-22 09:31:292823parcourir

Solution au fichier Excel exporté php tronqué : traitez d'abord les données de script pertinentes ; puis ajoutez la fonction "ob_end_clean()" avant de sortir le fichier Excel. Cette fonction est utilisée pour vider le tampon et fermer le tampon de sortie.

Comment résoudre le problème des caractères tronqués dans les fichiers Excel exportés par php

Problème de fichier Excel d'exportation php tronqué

Utilisation de PHP pour exporter des documents Excel, parfois Les données exportées seront tronquées sans raison. Maintenant, je recommande une méthode de réparation universelle

Sans plus tarder, passons directement au code

L'essentiel est d'ajouter ob_end_clean(() avant la sortie. le fichier Excel après avoir traité les données. ) fonction ; voir l'exemple de code pour plus de détails, seule une partie du code est répertoriée ici

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;

Comme indiqué dans le code marqué en rouge ci-dessus, si cette méthode ne fonctionne toujours pas, veuillez essayer d'utiliser la fonction iconv(), l'utilisation spécifique ne sera pas expliquée en détail ici. Veuillez Baidu

recommander : "Tutoriel PHP"

Introduction connexe. :

ob_end_clean — efface (efface) le tampon et ferme le tampon de sortie

Description

ob_end_clean (void): bool

Cette fonction supprime le contenu du tampon de sortie de niveau supérieur et ferme ce tampon. Si vous souhaitez poursuivre le traitement du contenu du tampon, vous devez appeler ob_get_contents() avant ob_end_clean(), car le contenu du tampon sera supprimé lors de l'appel de ob_end_clean().

Valeur de retour

Renvoie VRAI en cas de succès, ou FAUX en cas d'échec. La raison de l'erreur est tout d'abord qu'il n'y a pas de tampon actif au moment de l'appel, ou que le tampon ne peut pas être supprimé pour une raison quelconque (peut-être pour un tampon spécial).

Erreur/Exception

Si la fonction échoue, une exception E_NOTICE sera levée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn