Dies ist eine alte Version des Dokuments!
Konvertiere csv zu html
Für ein kleines Problem sollte ein PHP Skript geschrieben werden.
Ausgangslage
Es existieren csv Dateien wie z.B. diese werte1.csv
Zeit,Sollwert,Istwert 16:01:00,1,1.1 16:06:00,2,2.1 16:11:00,3,3.0 16:16:00,4,4.2 16:21:00,5,5.1 16:26:00,6,6.9 16:31:00,7,7.1 16:36:00,8,8.5 16:41:00,9,4.3 16:46:00,10,5.2 16:51:00,11,1.3 16:56:00,12,2.3 17:01:00,13,3.2 17:06:00,14,4.4
Diese Werte sollte automatisch in ein html Format mit vorgegebenen header und footer kovertiert werden.
Dazu habe ich eine header.html erstellt
<h1 style="text-align: center;"><img src="./img/logo.png" alt="Firma Logo" width="60" height="60" /> <strong> Coole Firma</strong></h1>
und dazu auch noch eine footer.html
<p>Durchgeführt am <span style="text-decoration: underline;">str_date </span></p> <p>durch <span style="text-decoration: underline;">str_name</span></p>
und mein change.php Skript
<?php // Überprüfen, ob der Dateipfad als Argument übergeben wurde if ($argc < 2) { die("Bitte den Pfad zur CSV-Datei als Argument übergeben.\nBeispiel: php anzeige.php /pfad/zur/datei.csv\n"); } // CSV-Dateipfad aus dem Argument erhalten $csvFile = $argv[1]; // Pfade für Header und Footer Dateien festlegen $headerFile = 'header.html'; $footerFile = 'footer.html'; // Überprüfen, ob die CSV-Datei existiert und lesbar ist if (!file_exists($csvFile) || !is_readable($csvFile)) { die("Die angegebene CSV-Datei konnte nicht gefunden oder gelesen werden.\n"); } // Überprüfen, ob Header- und Footer-Dateien existieren $headerContent = file_exists($headerFile) ? file_get_contents($headerFile) : ''; $footerContent = file_exists($footerFile) ? file_get_contents($footerFile) : ''; // HTML-Dateipfad festlegen (im gleichen Verzeichnis wie die CSV-Datei) $htmlFile = pathinfo($csvFile, PATHINFO_DIRNAME) . '/' . pathinfo($csvFile, PATHINFO_FILENAME) . '.html'; // CSV-Datei öffnen und Daten einlesen $data = []; if (($handle = fopen($csvFile, 'r')) !== false) { // Erste Zeile als Kopfzeile lesen $header = fgetcsv($handle); // Restliche Zeilen einlesen und in $data speichern while (($row = fgetcsv($handle)) !== false) { $data[] = array_combine($header, $row); } fclose($handle); } // HTML-Inhalt erstellen und Header einfügen $htmlContent = '<!DOCTYPE html> <html lang="de"> <head> <meta charset="UTF-8"> <title>Prüfprotokoll</title> <style> table { border-collapse: collapse; width: 75%; margin-left: auto; margin-right: auto; } th, td { border: 1px solid #ddd; padding: 8px; text-align: center; } th { background-color: #f2f2f2; } h1 { text-align: center; } footer { margin-top: 20px; } /* Abstand zwischen Tabelle und Footer vergrößern */ </style> </head> <body> '; // Header-Inhalt hinzufügen (wenn vorhanden) $htmlContent .= $headerContent; // Tabelle beginnen mit dem neuen Titel $htmlContent .= '<h1>Prüfprotokoll</h1> <table> <tr>'; // Spaltenüberschriften hinzufügen foreach ($header as $col) { $htmlContent .= '<th>' . htmlspecialchars($col) . '</th>'; } $htmlContent .= '</tr>'; // Datenzeilen hinzufügen foreach ($data as $row) { $htmlContent .= '<tr>'; foreach ($row as $cell) { $htmlContent .= '<td>' . htmlspecialchars($cell) . '</td>'; } $htmlContent .= '</tr>'; } $htmlContent .= '</table>'; // Footer-Inhalt hinzufügen (wenn vorhanden) $htmlContent .= '<footer>' . $footerContent . '</footer>'; // HTML schließen $htmlContent .= '</body></html>'; // HTML-Inhalt in Datei speichern file_put_contents($htmlFile, $htmlContent); echo "HTML-Datei wurde erfolgreich erstellt: $htmlFile\n";
Alle drei Dateien liegen gemeinsam in einem Ordner
/var/www/html/...
change.php
header.html
footer.html
img/logo.png
/var/www/html/protokolle/werte1.csv
<code>
\\
Durch ausführen von change.php werden header,footer und die werte1 zusammengführt und als html Datei an der selben Stelle ausgegeben wie die werte1.csv.
<code Bash>
php change.php /var/www/html/protokolle/werte1.csv
HTML-Datei wurde erfolgreich erstellt: /var/www/html/protokolle/werte1.html