Da ich in letzter Zeit immer mal wieder mit CSV-Dateien herumhantierten musste und es mich immer gestört hat, dass dieses Format so schlecht zu lesen ist, habe ich mir ein kleines PHP-Skript geschrieben das dieses Problem löst:
$read = fopen($argv[1], 'r'); $separator = empty($argv[2])?';':$argv[2]; $tmpPath = sys_get_temp_dir().'/csv2.html'; $write = fopen($tmpPath, 'w'); fwrite($write, '<html><head><title>csv2html result</title></head><body><table><thead><tr>'); $row = fgetcsv($read, 2048, $separator); foreach($row as $key => $value) { fwrite($write, '<th>'.$value.'</th>'); } fwrite($write, '</tr></thead><tbody>'); while(($row = fgetcsv($read, 2048, $separator)) !== false) { fwrite($write, '<tr>'); foreach($row as $key => $value) { fwrite($write, '<td>'.$value.'</td>'); } fwrite($write, '</tr>'); } fwrite($write, '</tbody></table></body></html>'); fclose($read); fclose($write); switch(true) { case stristr(PHP_OS, 'DAR'): exec('/usr/bin/open -a "/Applications/Google Chrome.app" \'file:///'.$tmpPath.'\''); break; case stristr(PHP_OS, 'WIN'): exec('start "" "file:///'.$tmpPath.'"'); break; case stristr(PHP_OS, 'LINUX'): exec('x-www-browser "file:///'.$tmpPath.'"'); break; default: echo 'Cannot open html file: Unknown OS.'; } |
Dieses Skript wandelt die angegebene CSV-Datei in HTML um und öffnet das HTML-Dokument anschließend im Chrome.
Jetzt habe ich natürlich keine Lust das Skript jedes mal über die Konsole aufzurufen. Deshalb habe ich den Skript-Aufruf in meine Entwicklungsumgebung PhpStorm integriert (siehe Bild: Preferences -> External Tools):
Danach lässt sich das Skript über das Datei-Kontextmenü von PhpStorm aufrufen (siehe Bild). Wenn man dann eine CSV-Datei auswählt, öffnet sich im Chrome eine HTML-Ansicht der CSV-Daten.
Hinweis: Man kann dem Skript als zweiten Parameter auch den Separator übergeben. Falls jemand also nicht mit dem hier definierten Standard-Separator arbeitet (Semikolon), muss der Skript-Aufruf entsprechend erweitert werden.