Position actuelle: Accueil> Derniers articles> Utilisez en tête () pour définir Excel Export: Type MIME et Points clés de codage

Utilisez en tête () pour définir Excel Export: Type MIME et Points clés de codage

M66 2025-05-28

Dans PHP, si nous souhaitons générer un fichier Excel pour les utilisateurs à télécharger, la méthode couramment utilisée consiste à utiliser la fonction d'en-tête () pour définir l'en-tête HTTP correct. Cet article présentera comment configurer Excel Export à l'aide d' une en-tête () , et expliquera également certaines notes sur les types de mime et le codage des caractères.

1. Pourquoi utiliser en tête ()?

Enditer () est une fonction de PHP utilisée pour envoyer des informations d'en-tête HTTP brutes. Le navigateur décide comment traiter le contenu retourné en fonction des informations d'en-tête reçues. Par exemple:

  • Le type de contenu indique au navigateur quel type de fichier il s'agit.

  • La disposition du contenu peut forcer un fichier à être téléchargé ou définir le nom du fichier lors du téléchargement.

Si nous voulons que le navigateur traite la sortie de données par PHP en tant que fichier Excel, nous devons définir ces en-têtes.

2. Paramètres d'en-tête de base ()

Voici un exemple de base pour générer des fichiers Excel (format Legacy.xls ):

 <?php
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"export.xls\"");
header("Cache-Control: max-age=0");

echo "numéro de série\tNom\tscore\n";
echo "1\tZhang San\t90\n";
echo "2\tLi si\t85\n";
?>

illustrer:

  • Type de contenu: application / vnd.ms-excel
    Dites au navigateur qu'il s'agit d'un fichier Excel.

  • Disposition du contenu: pièce jointe; filename = "export.xls"
    Spécifie le nom du fichier au moment du téléchargement.

  • Cache-Control: Max-Age = 0
    Évitez la mise en cache.

Remarque: Cette méthode convient aux formats de texte brut ou de HTML que Excel reconnaît et ne génère pas directement des formats de fichiers excel réels (tels que .xlsx ).

3. À propos du choix du type mime

Différents formats d'exportation et différents types de mime. Couramment utilisés sont:

  • application / vnd.ms-excel - fichier .xls traditionnel.

  • application / vnd.openxmlformats-officeDocument.spreadsheetml.sheet - Excel 2007 et supérieur aux fichiers .xlsx .

  • Application / CSV ou texte / CSV - Fichier CSV.

Si vous générez un fichier .xlsx , vous devez également utiliser des bibliothèques telles que PhPSPreadsheet , pas seulement le texte de sortie.

4. Piège d'encodage de caractère

Les problèmes de codage sont courants lors de la génération de fichiers Excel, en particulier lors de l'inclusion du chinois.

FAQ:

  • Après avoir ouvert le fichier Excel, le texte chinois affiche du code brouillé.

  • Les caractères spéciaux sont mal analysés.

Solution:

  1. Utilisez iconv () ou mb_convert_encoding () pour convertir la sortie en un codage reconnu par Excel, comme GB2312 ou UTF-16Le.

  2. Dans un fichier CSV, vous pouvez ajouter une nomenclature (marque d'octet) au début, tel que \ xef \ xbb \ xbf , pour aider Excel à reconnaître le codage UTF-8.

Exemple (Sortie UTF-8 CSV avec BOM):

 <?php
header("Content-Type: text/csv; charset=utf-8");
header("Content-Disposition: attachment; filename=\"export.csv\"");
header("Cache-Control: max-age=0");

// Sortir BOM
echo "\xEF\xBB\xBF";

echo "numéro de série,Nom,score\n";
echo "1,Zhang San,90\n";
echo "2,Li si,85\n";
?>

5. Exemple complet: générer des fichiers Excel 2007+

Pour générer .xlsx , vous devez généralement utiliser des bibliothèques telles que PHPSPreadsheet , et vous devez également définir correctement la sortie:

 <?php
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'numéro de série');
$sheet->setCellValue('B1', 'Nom');
$sheet->setCellValue('C1', 'score');
$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');
?>

Avis:

  • Si vous avez un lien ou une URL référencée dans votre code, assurez-vous de le remplacer par un nom de domaine comme https://m66.net/xxx .

  • Par exemple, pour mettre un hyperlien dans Excel:

 $sheet->setCellValue('D2', '=HYPERLINK("https://m66.net/page", "Vérifiez les détails")');

6. Résumé

La chose la plus importante est d'utiliser en-tête () pour exporter des fichiers Excel:

  • Définissez correctement le type de contenu et le contenu .

  • Gérer bien le codage des personnages et éviter les caractères chinois ou spéciaux broulés.

  • Les formats complexes (tels que .xlsx ) doivent être générés à l'aide de bibliothèques spéciales.

Ces paramètres permettent à votre programme PHP d'implémenter facilement les fonctionnalités d'exportation de données Excel. J'espère que cet article peut vous aider à éviter les détours dans le développement réel!

  • Étiquettes associées:

    header