Simpler XLSX Parser in PHP + Docker + Webserver Ausgabe als einfaches HTML
Hallo,
hier mal eine kleine Anleitung für einen einfachen XLSX Parser, der aus der XLSX eine einfache HTML Seite macht.
Es wird hier von einer lokalen Datei ausgegangen, die Erste Reihe wird automatisch als TableHeader gesetzt.
Dateistruktur:
docker-compose.yml
Dockerfile
composer.josn
index.php
grüße
hier mal eine kleine Anleitung für einen einfachen XLSX Parser, der aus der XLSX eine einfache HTML Seite macht.
Es wird hier von einer lokalen Datei ausgegangen, die Erste Reihe wird automatisch als TableHeader gesetzt.
Dateistruktur:
/
- docker
--docker.compose.yml
--Dockerfile
-src
--composer.json
--index.php
--example.xlsx
docker-compose.yml
version: '3.8'
services:
xlsxparse:
build:
context: ./
dockerfile: ./Dockerfile
container_name: xlsxparse
working_dir: /app
volumes:
- ../src/:/app
command: sh -c "php -S 0.0.0.0:80 -t /app"
ports:
- 8066:80
depends_on:
- composer
composer:
image: composer:latest
container_name: composer-installer
working_dir: /app
volumes:
- ../src/:/app
command: ["composer", "install", "--ignore-platform-req=ext-gd"]
Dockerfile
FROM php:8.2-cli
RUN apt-get update
RUN apt-get update && apt-get install -y zlib1g-dev libzip-dev
RUN docker-php-ext-install zip
composer.josn
{
"name": "pr/xlsxparser",
"require": {
"aspera/xlsx-reader": "^1.1"
},
"autoload": {
"psr-4": {
"Pr\\Xlsxparser\\": "src/"
}
}
}
index.php
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>SimpleXLSXParser</title>
</head>
<body>
<?php
require 'vendor/autoload.php';
use Aspera\Spreadsheet\XLSX\Reader;
try {
$reader = new Reader();
$reader->open('exa-mple.xlsx');
$i = 0;
echo '<table><thead><tr>';
foreach ($reader as $row) {
renderSingleRow($row, $i == 0);
if($i == 0){
echo '</tr></thead><tbody><tr>';
} else {
echo '</tr><tr>';
}
$i++;
}
echo '</tbody></table>';
function renderSingleRow($row, $tableHeader=false) {
foreach($row as $data){
if($tableHeader){
echo '<th>'.$data.'</th>';
} else {
echo '<td>'.$data.'</td>';
}
}
}
$reader->close();
} catch( Exception $ex ) {
echo '<pre>'.print_r($ex, true).'<pre>';
}
?>
</body>
</html>
grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 671311
Url: https://administrator.de/tutorial/simpler-xlsx-parser-in-php-docker-webserver-ausgabe-als-einfaches-html-671311.html
Ausgedruckt am: 12.02.2025 um 13:02 Uhr
1 Kommentar
Hallo,
ein paar Korrekturen/Verbesserungen:
- working_dir: /app -> pack das mit WORKDIR /app in die Dockerfile
- command: sh -c "php -S 0.0.0.0:80 -t /app" -> pack das mit CMD ["php", "-S", "0.0.0.0:80", "-t", "/app"] an das Ende deiner Dockerfile
- reduziere die Layer deiner Dockerfile:
- pack die renderSingleRow aus dem try-catch raus
ein paar Korrekturen/Verbesserungen:
- working_dir: /app -> pack das mit WORKDIR /app in die Dockerfile
- command: sh -c "php -S 0.0.0.0:80 -t /app" -> pack das mit CMD ["php", "-S", "0.0.0.0:80", "-t", "/app"] an das Ende deiner Dockerfile
- reduziere die Layer deiner Dockerfile:
FROM php:8.2-cli
RUN apt-get update \
&& apt-get install -y zlib1g-dev libzip-dev \
&& docker-php-ext-install zip