0 like 0 dislike

Sziasztok!

Azt szeretném megoldani, hogy gombnyomásra xlsx formátumba lehessen kiexportálni az adatokat adatbázisból. Van egy felület, ahol táblázatos formában megjelennek az adatok és ott lenne egy xlsx export gomb. Találtam egy xlsxwriter nevű osztályt, amivel sikerült is megoldani a dolgot, legalábbis úgy tűnt, aztán amikor bekerült kb 150 record adatbázisba, akkor már egy olyan xlsx-et kapok, amit megnyitva kiírja az excel, hogy érvénytelen a fájlkiterjesztés vagy a formátum és nem tudja megnyitni a fájlt. Néztem, hogy van-e valami spéci karakter, ami bekavarhat, vagy bármi, de nem értem mi lehet a gondja.
Valami ötlet, vagy javaslat, hogy mit próbáljak ki, esetleg olyan osztályt tudtok ajánlani, amit használtatok és nem volt vele gond?
Előre is köszönöm!

kérdezve Jan 3, 2016 PHP kategóriában Zoltán Stefán (56 pont) által

Követelmény hogy xlsx legyen? Fontold meg hogy inkább CSV-t engedsz letölteni - ezt egyetlen kattintással több csak excelben megnyitni mint a saját formátumát, viszont sokkal egyszerűbb generálni. Jó megoldás lehet ha egyszerű megoldást keresel és nincs szükséged excel-képletekre.

3 válasz

2 like 0 dislike

PHP alól a legjobb erre a PHPExcel (https://github.com/PHPOffice/PHPExcel) projekt, xlsx készítésre tökéletes. Szerkesztés is működik, amikor legutóbb használtam, a sor-törléssel akadtak gondok [lassú művelet], kis módosítással [a lehető legnagyobb összefüggő területeket egyszerre töröltem] elfogadható sebességű lett több ezer soros táblán is.

megválaszolva Jan 3, 2016 BlackY (117 pont) által

Még abban az esetben is, ha adott, hogy milyen formátumú fájlt kell exportálni, érdemes valamilyen data pipeline implementációt használni. Miért? Ezek általában elég jó absztrakcióval rendelkeznek, ezáltal könnyű egyes részeit (pl a kimeneti formátumot) kicserélni.

Például: https://github.com/portphp

(Azt hiszem van PHPExcel adaptere)

1 like 0 dislike

Ha nem feltétlen PHP-s megoldásban gondolkodsz, akkor javaslom neked a BIRT-öt. Megtanulni ugyan nehézkes, de hosszú távon kifizetődő.

Na, de mi is ez?

A BIRT egy Java alapú alkalmazás, amivel saját összekattintott sémák alapján tudsz kigenerálni jelentéseket bármilyen formátumba. Én jelenleg rendelési összesítők, rendelések és statisztikák generálására használom, eddig nem volt különösebb fennakadásom a programmal.

Hogyan használjuk saját gépen?

Legegyszerűbb, ha a BRIRT oldaláról leszeded az All-in-One csomagot és itt a Report Designer-ben elkészíted a neked megfelelő megjelenésű sémát.

Hogyan használjuk szerver oldalon?

Ha van SSH hozzáférésed a géphez vagy netán saját szerverről üzemeltetnél: A szerver oldalon kell lennie Java futtatási lehetőségnek (pl. openjdk-8-jre, openjdk-8-jdk), aminek a telepítéséről itt találsz bővebben leírást.

Le kell töltened ezután a BIRT oldaláról a legújabb Runtime-ot, majd az alábbi paranccsal tudod szerver oldalon legenerálni a kívánt sémákat:

export BIRT_HOME="/ahova/a/birt/runtimet/leszedted"

Majd a ReportEngine könyvtárba váltsunk és végezzük el a generálást:

cd ${BIRT_HOME}/ReportEngine
sh genReport.sh --format xls semafajlod.rptdesign

Érdekel?

Ha felkeltette érdeklődésed a BIRT és szereted a step-by-step leírásokat, akkor ez az oldal sokat segíthet benne.

megválaszolva Jan 3, 2016 Sántha Bence (108 pont) által
0 like 0 dislike

Namármost az xlsx az egy XML alapú formátum. Én anno a következő módon csináltam az exportot:

  1. készítettem egy dummy xlsx file-t a táblázatkezelőben, amiben a
    szükséges oszlopok a megfelelő oszloptípusra voltak állítva a
    megfelelő fejlécekkel, és raktam hozzá pár sornyi (tipus-helyes)
    dummy adatot.
  2. Csináltam egy másolatot a file-ról, amiben minden
    ugyanaz, csak a dummy adatokon változtattam.
  3. Összehasonlítva a két fájlt, szét tudtam bontani a következő elemekre:
  • header (ami fix)
  • content (amiben az adatok dinamikusak)
  • footer (ami szintén fix)

Ebből aztán bármelyik template-ező library tud generálni egy valid kimenetet, hisz tök mindegy, hogy HTML-t, vagy XML-t generál :)

A fenti módszerrel én a következő dolgokat tudtam megcsinálni:

  • több ezer soros export
  • színek, formázások, logó használata
  • tabok használata
  • függvények használata

Belátom, macerás, de az is igaz, hogy csak egyszer kell megcsinálni, onnantól kezdve menni fog :)

megválaszolva Máj 27, 2016 navig80 (4 pont) által
A Veremcsere a Refaktor Magazinhoz kapcsolódó, barátságos kérdezz-felelek oldal, ahol felteheted a webfejlesztéssel és üzemeltetéssel kapcsolatos kérdésedet.

A részletekért olvasd el az üdvözlő postunkat!
Az oldal valamennyi tartalma a Creative Commons Attribution NonCommercial ShareAlike 3.0 licenc alatt érhető el.

Kapcsolódó kérdések

0 like 0 dislike
0 válasz
0 like 0 dislike
1 válasz
kérdezve Jún 2, 2016 PHP kategóriában lencse (2 pont) által
0 like 0 dislike
2 válasz
kérdezve Ápr 22, 2016 PHP kategóriában kocsisdavid99 (13 pont) által
0 like 0 dislike
1 válasz
kérdezve Ápr 18, 2016 PHP kategóriában wpdaniel (178 pont) által
0 like 0 dislike
3 válasz
kérdezve Már 8, 2016 PHP kategóriában Ákos Erős (23 pont) által
67 kérdés
142 válasz
354 hozzászólás
113 felhasználó