PHP: XLSX einfach lesen

Bei in Java bei XML ist die bekannteste Lösung manchmal nicht die Lösung, die man gerade braucht. Groß, komplex und kann alles. Dependencies machen dann aber Probleme und wenn man nur eine Datei schnell und einfach lesen möchte, braucht man nicht irgend eine HTML-Lib, die nur in ganz bestimmten Fällen nötig wäre.

Beim Lesen von Excel-Dateien in PHP ist es genau so. HTML-Lib machte Probleme beim Installieren über Composer, aber ich will ga rkeine HTML-Sachen damit machen. Cool das es gehen würde, aber ich will nur schnell und einfach die Daten der Tabelle auslesen. CSV hätte ja gereicht, aber es kommt eben eine Excel-Datei.

Dann fand ich SimpleXLSX.

Super einfach zu benutzen. Hat keine weiteren Dependencies und liefert direkt die Tabelle als ein plain old Array.

bbcode-image


Code (XLSX to JSON):

<?php
include_once __DIR__ . '/vendor/autoload.php';

use Shuchkin\SimpleXLSX;

if ( $xlsx = SimpleXLSX::parse(__DIR__ . '/pets.xlsx') ) {
$json = [];
$head = $xlsx->rows()[0];

foreach ($xlsx->rows() as $idx => $row) {
if($idx > 0) {
$item = [];
foreach ($head as $idxKey => $key) {
if(strlen($key) > 0) {
$item[$key] = $row[$idxKey];
}
}
$json[] = $item;
}
}

echo json_encode($json);
} else {
echo SimpleXLSX::parseError();
}


Ergebnis:

[
{
"Name": "Miki",
"Rasse": "Hund",
"Farbe": "braun"
},
{
"Name": "Teddy",
"Rasse": "Hund",
"Farbe": "wei\\u00df"
},
{
"Name": "Merle",
"Rasse": "Katze",
"Farbe": "wei\\u00df|braun|schwarz"
},
{
"Name": "Finja",
"Rasse": "Katze",
"Farbe": "braun|schwarz"
},
{
"Name": "Ronja",
"Rasse": "Katze",
"Farbe": "wei\\u00df|schwarz"
},
{
"Name": "Molly",
"Rasse": "Katze",
"Farbe": "grau"
}
]
User annonyme 2023-12-02 07:53

Not able to write comment
Comments are disabled for this blog-entry.

Möchtest Du AdSense-Werbung erlauben und mir damit helfen die laufenden Kosten des Blogs tragen zu können?