Wenn wir in PHP eine Excel -Datei zum Herunterladen generieren möchten, besteht die häufig verwendete Methode darin, die Funktion Header () zu verwenden, um den richtigen HTTP -Header festzulegen. In diesem Artikel wird der Excel -Export mit Header () eingerichtet und einige Hinweise zu MIME -Typen und Charaktercodierung erläutert.
Header () ist eine Funktion in PHP, mit der RAW -HTTP -Headerinformationen gesendet werden. Der Browser entscheidet, wie die zurückgegebenen Inhalte basierend auf den empfangenen Header -Informationen verarbeitet werden. Zum Beispiel:
Inhaltstyp teilt dem Browser mit, welche Art von Datei dies ist.
Inhaltsdisposition kann eine Datei zum Herunterladen erzwingen oder den Dateinamen beim Herunterladen festlegen.
Wenn der Browser die Datenausgabe von PHP als Excel -Datei verarbeitet, müssen wir diese Header festlegen.
Hier ist ein grundlegendes Beispiel zum Generieren von Excel -Dateien ( Legacy.xls -Format):
<?php
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"export.xls\"");
header("Cache-Control: max-age=0");
echo "Seriennummer\tName\tPunktzahl\n";
echo "1\tZhang San\t90\n";
echo "2\tLi Si\t85\n";
?>
veranschaulichen:
Inhaltstyp: Anwendung/VND.MS-EXCEL
Sagen Sie dem Browser, dass dies eine Excel -Datei ist.
Inhaltsdisposition: Anhang; Dateiname = "export.xls"
Gibt den Dateinamen zum Zeitpunkt des Downloads an.
Cache-Control: max-agete = 0
Vermeiden Sie das Zwischenspeichern.
Hinweis: Diese Methode ist für einfache Text- oder HTML -Formate geeignet, die Excel erkennt, und generiert nicht direkt echte Excel -Dateiformate (z. B. .xlsx ).
Unterschiedliche Exportformate und unterschiedliche MIME -Typen. Häufig verwendet werden:
application/vnd.ms-excel -herkömmliche .xls- Datei.
application / vnd.openxMlFormats officedocument
Anwendung/CSV oder Text/CSV - CSV -Datei.
Wenn Sie eine .xlsx -Datei generieren, müssen Sie auch Bibliotheken wie PHPSPreadsheet verwenden und nicht nur Text ausgeben.
Codierungsprobleme sind bei der Generierung von Excel -Dateien häufig, insbesondere bei der Einbeziehung von Chinesen.
FAQ:
Nach dem Öffnen der Excel -Datei zeigt der chinesische Text verstümmelte Code an.
Sonderzeichen werden falsch analysiert.
Lösung:
Verwenden Sie iConv () oder mb_convert_encoding (), um die Ausgabe in eine von Excel erkannte Codierung wie GB2312 oder UTF-16LE zu konvertieren.
In einer CSV-Datei können Sie zu Beginn eine BOM (Byte Order Mark) wie \ xef \ xbb \ xbf hinzufügen, um das Erkennen der UTF-8-Codierung zu unterstützen.
Beispiel (Ausgabe UTF-8 CSV mit BOM):
<?php
header("Content-Type: text/csv; charset=utf-8");
header("Content-Disposition: attachment; filename=\"export.csv\"");
header("Cache-Control: max-age=0");
// Ausgabe BOM
echo "\xEF\xBB\xBF";
echo "Seriennummer,Name,Punktzahl\n";
echo "1,Zhang San,90\n";
echo "2,Li Si,85\n";
?>
Um .xlsx zu generieren, müssen Sie normalerweise Bibliotheken wie PhpSpreadsheet verwenden, und Sie müssen auch die Ausgabe korrekt einstellen:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Seriennummer');
$sheet->setCellValue('B1', 'Name');
$sheet->setCellValue('C1', 'Punktzahl');
$sheet->setCellValue('A2', '1');
$sheet->setCellValue('B2', 'Zhang San');
$sheet->setCellValue('C2', '90');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment; filename="export.xlsx"');
header('Cache-Control: max-age=0');
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
?>
Beachten:
Wenn Sie einen Link oder eine Referenz -URL in Ihrem Code haben, stellen Sie ihn durch einen Domänennamen wie https://m66.net/xxx aus.
Zum Beispiel, um einen Hyperlink in Excel zu setzen:
$sheet->setCellValue('D2', '=HYPERLINK("https://m66.net/page", "Überprüfen Sie die Details")');
Das Wichtigste ist , Header () zu verwenden, um Excel -Dateien zu exportieren:
Stellen Sie den Inhalt und die Inhaltsdisposition korrekt fest.
Behandeln Sie die Charakter -Codierung gut und vermeiden Sie, dass Chinesen oder Sonderzeichen verstümmelt sind.
Komplexe Formate (wie .xlsx ) müssen mit speziellen Bibliotheken generiert werden.
Mit diesen Einstellungen kann Ihr PHP -Programm die Exportexportfunktionalität von Excel -Daten einfach implementieren. Ich hoffe, dieser Artikel kann Ihnen helfen, Umwege in der tatsächlichen Entwicklung zu vermeiden!