PHP XLSX Writer überspringt erste Zeile - was tun?
Hey!
Ich habe gestern die Erweiterung PHP XLSX Writer gefunden und meinem System hinzugefügt. Ziel: Datenbank mit PHP (und mysqli) in ein Excel Dokument umwandeln. Irgendwie überspringt er die erste Zeile und spuckt mir im Dokument erst alles ab id=2 aus... Wisst ihr woran das liegt?
Danke schonmal für eure Antworten!
Hier noch der Quellcode von meiner export.php:
<?php
include "config.php";
include_once("../includes/excel/xlsxwriter.class.php");
//ini_set('display_errors', 0);
//ini_set('log_errors', 1);
//error_reporting(E_ALL & ~E_NOTICE);
date_default_timezone_set('Europe/Berlin');
$filename = "PZUS_" . date('Y-m-d') . ".xlsx";
header('Content-disposition: attachment; filename="'.XLSXWriter::sanitize_filename($filename).'"');
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$sql="SELECT * FROM tbl_contact";
$result = $link->query($sql);
$row = $result->fetch_assoc();
$header = array(
'ID'=>'string',
'Nachname'=>'string',
'Vorname'=>'string',
'Klasse'=>'string',
'Bemerkung'=>'string',
'Datum'=>'string',
'Email'=>'string',
'Adresse'=>'string',
'Tel'=>'string',
);
$writer = new XLSXWriter();
$writer->writeSheetHeader('PZUS-1', $header);
$array = array();
while ($row=$result->fetch_assoc())
{
$array[1] = $row['id'];
$array[2] = $row['fldSurname'];
$array[3] = $row['fldFirstname'];
$array[4] = $row['fldClass'];
//$array[4] = $row['fldCourse'];
$array[5] = $row['fldDmg'];
$array[6] = $row['fldDate'];
$array[7] = $row['fldEmail'];
$array[8] = $row['fldAdress'];
$array[9] = $row['fldTel'];
$writer->writeSheetRow('PZUS-1', $array);
};
//$writer->writeSheet($array,'Sheet1', $header);//or write the whole sheet in 1 call
$writer->writeToStdOut();
//$writer->writeToFile('example.xlsx');
//echo $writer->writeToString();
exit(0);
2 Antworten
Die erste Zeile aus deinen Ergebnissen holst du dir ja auch schon vorher (direkt vor $header =) ohne irgendwas damit zu machen.
Also einfach diese Zeile löschen:
$row = $result->fetch_assoc();
Dann sollte alles in deinem Sheet landen.
ist der erste eintrag überhaupt die 1 , den ich sehe da kein ORDER BY und damit ist nie sichergesellt welche reihenfolge an ID kommt , im zweifel eher so wie sie eingetragen wurden .
lass dir also einfach ausgeben was eingetragen wird .
hab ich glatt überlesen die zeile weil ich sowas nie machen würde ohne while lol .gibt das sternchen mal Babelfish
Edit: Falsche Zeile in der Antwort eingefügt, geht natürlich um die Zeile
$row = $result->fetch_assoc();
ich hatte noch gedacht das wenn ,du eintrag 0 rausfiltern willst :) aber dennoch überlesen .
Danke, da ist tatsächlich alles richtig.
Habe den Fehler gerade selber gefunden:
Die Zeile ist einfach doppelt...
Einmal oben und ein mal in der While Abfrage.
Das ganze oben rauslöschen und alles klappt.
Danke dir trotzdem! :D