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.
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-Tutorialob_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!