Ich muss drei bestimmte Tabellen in ein Excel-Blatt exportieren, aber alle Daten sind ziemlich viel in einem Feld, was eine große Unordnung verursacht. Ist es möglich, den Inhalt der drei Tabellen zu exportieren und sie in Excel durch PHP zu formatieren? Grundsätzlich so, dass ich bekomme:Exportieren von bestimmten MySQL-Tabellen zu übertreffen in PHP
Date: Subject Participants
Start - End Subject Title User 1
User 2
User 3
Grundsätzlich so, dass alles so ist? Um es klar und sichtbar zu machen (obwohl dies Probleme mit einer größeren Anzahl von Teilnehmern verursachen könnte).
Auch ich werde meinen Code teilen, vielleicht kann jemand sehen, was ich dieses Mal verpfuscht.
<div id="tableform">
<form method="post">
<table class="nostyle">
<tr>
<th><label for="startDate">Begin datum:</label></th>
<td><input type="date" id="BeginDate" name="BeginDate" placeholder="DD-MM-YYYY"></td>
<td><input type="hidden" id="startDate" name="startDate" value="<?= $startdate; ?>"/></td>
</tr>
<tr>
<th><label for="endDate">Eind datum:</label></th>
<td><input type="date" id="EindDate" name="EindDate" placeholder="DD-MM-YYYY"></td>
<td><input type="hidden" id="endDate" name="endDate" value="<?= $enddate; ?>"/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="generate" value="Jaarverslag genereren"/></td>
</tr>
</table>
</form>
</div>
Und die Funktion:
<?php
public function generateReport($startDate = null, $endDate = null) {
if (empty($startDate) && empty($endDate)) {
$time = strtotime("-1 year", time());
$startDate = date("Y-m-d", $time);
$endDate = date("Y-m-d");
}
$this->generator->create('Jaaroverzicht-' . $startDate . '-' . $endDate);
$data = array(
"Datum" . '' . "Aanwezigen" . '' . "Bijscholing"
);
foreach ($this->dbSchooling->getYearReport($startDate, $endDate) as $row) {
$users = "";
$participants = $this->dbSchooling->getParticipants($row['bijscholing_id']);
foreach ($participants as $participant) {
$users .= $participant;
if ($participant == end($participants)) {
$users .= ', ';
}
}
$myDateTime = \DateTime::createFromFormat('Y-m-d', $row['bijscholing_begindatum']);
$newDateString = $myDateTime->format('d-m-Y');
array_push($data, ($newDateString . "." . $users . "." . '.' . $row['bijscholing_titel']));
}
foreach ($data as $line) {
$this->generator->store(explode('.', $line));
}
return $this->generator->close();
} ?>
Ich sehe nichts mit Excel dort zu tun. Generieren Sie einen csv mit '.' als Trennzeichen? und wenn du danach einfach auf dieses '' 'explodierst. Warum sollte man überhaupt eine "dotsv" Zeichenkette erzeugen? Stellen Sie einfach Ihre Felder in ein Array: '$ arr [] = array ($ newDateString, $ users, etc ....);' –
Können Sie ein Beispiel geben? Wie sehen die Daten am Anfang aus? Harte Arbeit, um deinen Code rückwärts zu verfolgen, nur um zu sehen, wo wir eigentlich anfangen. Können Sie aktuell Daten in Excel exportieren oder benötigen Sie das auch von uns? – Philipp
"wäre es möglich, den Inhalt der drei Tabellen zu exportieren UND sie in Excel durch PHP zu formatieren" Nein, Excel ist Software auf dem Client - Ihrem PC. Sie müssten die Daten in PHP formatieren und dann in Excel oder anders herum exportieren -> einfach Daten in Excel übertragen und Ihren Benutzer formatieren, auf seinem PC, dann laden Sie es auf Ihren Webserver und tun, was Sie wollen – Philipp