Cellules excel export
jordane45 Messages postés 40050 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je réalise un export de ma base de données vers excel tout ça en PHP.
Le problème que je rencontre est que les champs sont tous dans la même colonne A1 (voir screen ci-dessous)
Je veux que chaque champs sois dans sa cellules (voir screen ci dessous)
Voici mon code d’exportation en PHP:
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/src/config.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/src/functions/functions.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/src/database/database.php');
function filterData(&$str) {
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}
// filename for download
$filename = "export_data-" . date('Ymd') . ".csv";
//Columns name
$fields = array('ID', 'N° Ordre', 'Date', 'Nom', 'Prénoms', 'Adresse', 'Code Postal', 'Ville', 'Adresse mail', 'Montant', 'Methode', 'Banque', 'N° de chèque', 'Mode d\'envoie', "Date d'impression", 'Date de sauvegarde');
$excelData = implode(",", array_values($fields)) . "\n";
$query = $pdo->query("SELECT * FROM informations ORDER BY id DESC");
if ($query->rowCount() > 0) {
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$rowData = array(
$row['id'],
$row['ordre'],
$row['date'],
$row['nom'],
$row['prenom'],
$row['adresse'],
$row['codepostal'],
$row['ville'],
$row['adressemail'],
$row['montant'],
$row['methode'],
$row['banque'],
$row['ncheque'],
$row['modeenvoie'],
$row['dateimpression'],
$row['datesauvegarde']
);
// Échapper les caractères spéciaux dans chaque valeur
array_walk($rowData, 'filterData');
// Ajouter les données échappées à la chaîne Excel
$excelData .= implode(",", array_values($rowData)) . "\n";
}
} else {
$excelData .= 'No records found...' . "\n";
}
// Headers for download
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: text/csv; charset=utf-8");
// Output the BOM (Byte Order Mark) to ensure Excel correctly interprets UTF-8
echo "\xEF\xBB\xBF";
// Output the Excel data
echo mb_convert_encoding($excelData, 'UTF-8', 'UTF-8');
// Exit to prevent further output
exit();
?>
Merci d'avance !
- Cellules excel export
- Liste déroulante excel - Guide
- Verrouiller cellules excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Word et excel gratuit - Guide
- Fusionner deux cellules excel - Guide
1 réponse
Bonjour,
En aucun cas tu ne fais un export "excel" .... mais un export CSV
Dans ton cas, tu as utilisé la virgule comme séparateur.
Tu peux éventuellement la remplacer par un point-virgule si tu veux que ton excel l'ouvre directement en séparant les colonnes...
Sinon, dans excel, tu peux regarder comment fonctionne le menu données/convertir ...
Et enfin, tu peux sinon modifier ton code pour créer un vrai fichier excel en utilisant la librairie phpspredsheet par exemple.

