Creați tabele pivot utilizând Excel și PHP Advanced Export
Abrevieri obișnuite
- CSV: Valoare separată prin virgulă - valori separate prin virgule
- W3C: Consorțiul World Wide Web
- XML: limbaj extensibil de marcare - limbaj de marcare extins
Un tabel rezumativ este un tabel în care un utilizator poate selecta în mod dinamic câmpurile care sunt utilizate ca anteturi de rând și coloană și ce date sunt afișate în fiecare celulă. Câmpurile pot fi rearanjate în zbor, ceea ce vă permite să obțineți răspunsuri la întrebări complexe și să construiți modele interesante de reprezentare a datelor.
Figura 1 prezintă o foaie de calcul simplu Excel. Prima linie conține numele câmpurilor (Cont, Gen, Imagini, Media Ran, Dimensiune totală) și în liniile ulterioare - datele în sine. În acest caz, avem de-a face cu datele unui site Web pe care sunt stocate imagini (de exemplu, Flickr). Fiecare rând conține informații despre contul specificat, inclusiv genul și numărul de imagini descărcate, evaluarea medie a acestora și suma totală în octeți.
Figura 1. Un tabel Excel simplu
Pentru a construi o tabelă pivot în Excel, trebuie să selectați coloanele de date care vor fi utilizate în ea și apoi să selectați elementul PivotTable Report din meniul Date. După aceasta, vi se va solicita să specificați ce date vor fi utilizate în expertul de raportare. După terminarea expertului, o fișă nouă va fi adăugată la fișierul Excel.
Figura 2 prezintă o tabelă sumară goală cu bara de instrumente plutitoare a PivotTable. Pagina conține zone în care puteți trage fiecare element de câmp pentru a genera un raport.
Figura 2. Crearea unui tabel rezumativ
Figura 3 prezintă o vizualizare mai detaliată a barei de instrumente PivotTable. Meniul PivotTable situat pe niveluri butoane de sus și mai multe de tabele imbricate, iar partea de jos listează toate câmpurile disponibile (Cont, Gen, Imagini, Ran medie, dimensiunea totală).
Figura 3. Bara de instrumente PivotTable
Pentru a configura PivotTable, trebuie să selectați câmpurile și să le trageți în zona corespunzătoare a paginii. În Figura 4, vedeți rezultatul tragerii genului de câmp, a contului și a dimensiunii totale în zona de date din partea stângă a raportului.
Figura 4. Tabelul sumar completat cu date
Acum, raportul afișează rândurile grupate mai întâi după gen, apoi după cont. În ea vom vedea cantitatea totală de imagini încărcate pentru fiecare cont, suma netă pentru fiecare gen, și, în cele din urmă, un total completă a tuturor imaginilor încărcate.
Când salvați o foaie de calcul Excel în format XML, toate datele și parametrii tabelului pivot sunt plasați într-un fișier XML. Un fragment al unui astfel de fișier este afișat în listare 1.
Listing 1. Exemplul de export din Excel
Exemplul nostru de aplicație PHP creează un fișier Excel XML cu două coli: prima foaie conține datele originale, iar cea de-a doua - PivotTable PivotTable. Acest tabel rezumat are toate proprietățile dinamice disponibile, ca și cum ar fi fost create direct în Excel.
Înainte de a începe, trebuie să obțineți datele pentru foaia de calcul.
Primirea datelor
Pentru a simplifica sarcina, creați un fișier de date XML, așa cum se arată în Lista 2.
Afișați 2. fișierul data.xml
Elementul rădăcină al XML este elementul utilizator. Acesta conține elemente imbricate pentru fiecare cont de utilizator. Fiecare element de utilizator conține atributele contului. gen. imagini. avgrank și mărime. Aceste atribute conțin date relevante pentru fiecare cont.
Pentru a citi aceste date, am scris un simplu fișier data.php. care conține o singură funcție load_data. Această funcție citește datele XML și o returnează ca o serie de tabele hash. Codul pentru această funcție este afișat în listare 3.
Listing 3. Fișierul data.php
Codul începe cu crearea obiectului DOMDocument. care este folosit pentru a încărca XML dintr-un fișier. Mai mult, iterațiile buclă foreach peste toate conturile utilizatorilor și atributele lor sunt stocate în matrice de date, care este apoi returnat apelantului.
În plus față de funcția de citire a datelor, definim o altă funcție print_file. care imprimă întregul conținut al fișierului. Codul pentru această funcție este afișat în Lista 4.
Listing 4. Fișierul helpers.php
Funcția print_file este necesară dintr-un singur motiv simplu. Deoarece structura fișierului XML XML este destul de complexă, cea mai ușoară modalitate de a crea este obținerea fișierului inițial din XML și utilizarea fragmentelor sale ca sursă a fișierului exportat. În acest caz, mai întâi se ia fragmentul fișierului, începând de la început și terminând cu locul unde se determină prima carte și plasat în fișierul body_header.txt. Un fragment al fișierului, pornind de la locul în care se încheie ultima carte și până la sfârșit, este plasat în fișierul body_footer.txt.
Aceleași fișiere și data_header.txt data_footer.txt situat la începutul și la sfârșitul tabelului din fila de date.
Creați o foaie de calcul simplu Excel
Acum, că avem funcțiile de citire a datelor și de tipărire într-un fișier, putem începe să creăm foi de calcul Excel. Lista 5 arată prima versiune a codului de export în Excel.
Listing 5. Fișierul helpers.php
În primul rând, datele sunt citite, iar apoi fișierele body_header.txt și data_header.txt sunt create. Apoi, folosind codul XML, este definită o tabelă, prima linie din care conține antete. Apoi, în buclă de foreach, se fac iterații asupra tuturor elementelor de date și se creează rânduri de date.
În timpul executării programului, ieșirea acestuia poate fi salvată într-un fișier care poate fi deschis în Excel. Ca rezultat, ar trebui să obțineți tabelul prezentat în Figura 5.
Figura 5. Tabelul principal exportat din PHP
În Figura 5, vedeți date formatate în funcție de fișierul sursă; Prima linie afișează anteturile câmpurilor, iar în liniile ulterioare - datele în sine.
Evident, nu doriți să utilizați exact același cod pentru sarcinile dvs. de export, deoarece în cazul dvs. atât câmpurile, cât și datele vor fi diferite. Cu toate acestea, procesul de creare a unei foi de lucru rămâne aceeași: creați mai întâi un fișier Excel, și apoi se taie o bucată de antet și subsol lui, și apoi pus în foaia de date proprii.
Crearea unui PivotTable
Tabelele de tabel pivot sunt puțin mai complicate, dar ideea este aceeași. În primul rând, datele se citesc și apoi se imprimă fișierul body_header.txt. După aceea, sunt imprimate paginile datelor, tabelul pivot și fișierul body_footer.txt. Acest cod este afișat în listare 6.
Listing 6. Fișierul build2.php
De asemenea, sunt interesante apelurile la funcția antet la începutul scriptului, deoarece le spun browserului ce să facă cu fișierul. Antetul tipului de conținut indică browserului că foaia de calcul trebuie salvată ca fișier numit pivot.xml.
Partea principală a lucrării este efectuată de funcțiile de export definite în fișierul exportatori.php. așa cum se arată în Lista 7.
Listing 7. Fișierul exportatori.php
Am eliminat majoritatea codului acestor funcții din listă pentru a economisi spațiu. Codul complet poate fi găsit în fișierul excelpivotxml.zip (consultați secțiunea Descărcare). Prima funcție export_data efectuează aceleași acțiuni ca și primul script (export de date). Pentru a crea o filă tabel pivot, funcția export_pivot creează mai întâi o foaie de lucru și apoi adaugă un tabel de date, opțiunile de foi și XML-ul PivotTable. După ce se termină crearea foii de lucru, se realizează crearea finală a PivotCache.
Sincer, nu știu de ce este nevoie de atât de mult XML pentru a defini o masă pivot. În acest caz, mai mult cod este cu siguranță folosit decât pentru crearea unui tabel simplu cu date. Cu toate acestea, vestea bună este că puteți crea un tabel pivot în Excel, salvați-l ca fișier XML și utilizați-l ca șablon pentru a vă scrie propriul cod.
Când scriptul PHP se termină, salvați rezultatul într-un fișier și deschideți-l în Excel. Ca rezultat, ar trebui să obțineți fișierul prezentat în Figura 6.
Figura 6. PivotTable exportat
Tabelul sumar din Figura 6 arată numărul total de imagini încărcate pentru fiecare cont și suma totală a tuturor imaginilor descărcate. Foaia de calcul Excel a fost creată corect, astfel încât bara de instrumente PivotTable este afișată în fereastră. Acum, folosind acest panou, utilizatorul poate adăuga câmpuri și personaliza tabelul.
concluzie
format bazat pe XML utilizat pentru Excel, acesta poate fi un pic mai complicat, dar puteți utiliza XML fișierul salvat ca bază pentru a crea propria foaie de calcul exportate. Această abordare simplifică foarte mult procesul de generare a fișierelor și permite utilizatorilor să creeze foi de calcul într-o formă în care aceștia doresc să le vadă, atunci aceste tabele pot fi exportate și de umplere a datelor pe zbor. Aceasta este o modalitate foarte bună de a oferi clienților informații noi fără a fi nevoie să părăsească lumea PHP și XML.