Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem verstümmelter Zeichen in von PHP exportierten Excel-Dateien

So lösen Sie das Problem verstümmelter Zeichen in von PHP exportierten Excel-Dateien

藏色散人
藏色散人Original
2020-07-22 09:31:292823Durchsuche

Lösung für verstümmelte PHP-exportierte Excel-Dateien: Verarbeiten Sie zuerst die relevanten Skriptdaten und fügen Sie dann die Funktion „ob_end_clean()“ hinzu, bevor Sie die Excel-Datei ausgeben. Diese Funktion wird verwendet, um den Puffer zu löschen und den Ausgabepuffer zu schließen.

So lösen Sie das Problem verstümmelter Zeichen in von PHP exportierten Excel-Dateien

Problem mit verstümmelter PHP-Export-Excel-Datei

Manchmal wird PHP zum Exportieren von Excel-Dokumenten verwendet Die exportierten Daten werden ohne Grund verstümmelt. Jetzt empfehle ich eine universelle Reparaturmethode

Gehen wir ohne weiteres direkt zum Code

Der Kern besteht darin, vor der Ausgabe ob_end_clean(() hinzuzufügen Die Excel-Datei nach der Verarbeitung der Daten. ) Einzelheiten finden Sie im Beispielcode. Hier ist nur ein Teil des Codes aufgeführt.

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;

Wie im rot markierten Code oben gezeigt, funktioniert diese Methode immer noch nicht. Bitte versuchen Sie, die Funktion iconv() zu verwenden. Die spezifische Verwendung wird hier nicht im Detail erläutert. Bitte empfehlen Sie Baidu: „

PHP-Tutorial

Verwandte Einführung :

ob_end_clean – Puffer löschen (löschen) und Ausgabepuffer schließen

Beschreibung

ob_end_clean (void): bool

Diese Funktion verwirft den Inhalt des Ausgabepuffers der obersten Ebene und schließt diesen Puffer. Wenn Sie den Inhalt des Puffers weiterverarbeiten möchten, müssen Sie ob_get_contents() vor ob_end_clean() aufrufen, da der Pufferinhalt beim Aufruf von ob_end_clean() verworfen wird.

Rückgabewert

Gibt TRUE bei Erfolg oder FALSE bei Fehler zurück. Der erste Grund für den Fehler ist, dass zum Zeitpunkt des Aufrufs kein aktiver Puffer vorhanden ist oder der Puffer aus irgendeinem Grund nicht gelöscht werden kann (vielleicht für einen speziellen Puffer).

Fehler/Ausnahme

Wenn die Funktion fehlschlägt, wird eine E_NOTICE-Ausnahme ausgelöst.

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter Zeichen in von PHP exportierten Excel-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn