Results 1 to 5 of 5

Thread: Save HTML Table in XLS

  1. #1
    Uber Mood johnake's Avatar
    Join Date
    Oct 2007
    Location
    Cum dai coltu', pe dreapta
    Posts
    4,573
    Blog Entries
    4

    Default Save HTML Table in XLS

    Aveti un site scris in PHP cu o baza de date in spate... Datele sunt organizate in tabele si vreti sa le exportati in excel, gata formatate? Nimic mai simplu

    In fisierul pe care-l vreti sa-l exportati (care contine tabelul), la inceput scrieti urmatoarele linii de cod (atentie sa fie intre tag'uri <? ?> sau <?php ?> inainte de orice cod HTML sau orice output generat de PHP):

    PHP Code:
    header("Content-Type: application/vnd.ms-excel");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("content-disposition: attachment;filename=numefisier.xls"); 
    and you're ready to go

    Este util cand doriti exportarea unor date dintr-o baza de date a MySQL in format XLS.
    "Smecheria" sau "trick'ul" consta in faptul ca prin acele linii de cod fisierului HTML generat ii este schimbata extensia in xls, iar Microsoft Excel este "capabil" sa citeasca cod HTML si sa-l rendeze in format tabular.
    PHP Code:
    $result mysql_query("SELECT finger FROM hand WHERE id=3");
    echo 
    $result

  2. #2

    Default

    Hai ma... nici chiar asa... nu invata copii prostii... cine stie ce programatori ajung si ne vom trezi in 2020 cu fisiere xls varza.

    Intamplator, "trucul" asta functioneaza pentru ca Microsoft Excel recunoaste ca XLS-ul nu este valid, si automat porneste sistemul de recunoastere a documentului, recunoaste ca e HTML si converteste HTML-ul in XLS.

    Problema este ca nu ai garantia ca acest mod de operare va exista si in versiuni viitoare de Excel. In plus, un numar tot mai mare de oameni folosesc OpenOffice, StarOffice sau chiar programe online Google de ex pentru a deschide fisiere XLS.
    Nu te poti baza ca userul are fix Microsoft Excel.

    Solutia cea mai simpla ar fi sa trimiti user-ului datele in format CSV (comma separated values) sau daca musai e nevoie sa fie XLS ai mai multe variante.

    * sa folosesti o clasa php gata scrisa de altii de ex: Class: Excel Writer (excel, xls, excel writer, excelwriter) - PHP Classes

    * sa citesti specificatiile xls si sa implementezi minimul necesar pentru a fi deschis xls-ul de orice program (spec aici: http://download.microsoft.com/downlo...cification.pdf )
    Buzzwords Ltd, unregistered company in England, Whales and Dolphins
    Value-added, synergistic forward thinking outside of the box solutions for the discerning employer with core competency metrics - touch base or ping us for more information on how you can improve your customer facing intuitive interfaces, transition your e-business mindshare, incentivize revolutionary technologies and evolve e-business solutions.

  3. #3
    Uber Mood johnake's Avatar
    Join Date
    Oct 2007
    Location
    Cum dai coltu', pe dreapta
    Posts
    4,573
    Blog Entries
    4

    Default

    Quote Originally Posted by Penemue View Post
    Hai ma... nici chiar asa... nu invata copii prostii... cine stie ce programatori ajung si ne vom trezi in 2020 cu fisiere xls varza.

    Intamplator, "trucul" asta functioneaza pentru ca Microsoft Excel recunoaste ca XLS-ul nu este valid, si automat porneste sistemul de recunoastere a documentului, recunoaste ca e HTML si converteste HTML-ul in XLS.

    Problema este ca nu ai garantia ca acest mod de operare va exista si in versiuni viitoare de Excel. In plus, un numar tot mai mare de oameni folosesc OpenOffice, StarOffice sau chiar programe online Google de ex pentru a deschide fisiere XLS.
    Nu te poti baza ca userul are fix Microsoft Excel.

    Solutia cea mai simpla ar fi sa trimiti user-ului datele in format CSV (comma separated values) sau daca musai e nevoie sa fie XLS ai mai multe variante.

    * sa folosesti o clasa php gata scrisa de altii de ex: Class: Excel Writer (excel, xls, excel writer, excelwriter) - PHP Classes

    * sa citesti specificatiile xls si sa implementezi minimul necesar pentru a fi deschis xls-ul de orice program (spec aici: http://download.microsoft.com/downlo...cification.pdf )
    Nu a fost cu intentie rea scris tutorialul. Editeaza-l tu cum trebuie. Asta a fost ultimul meu post in aceasta sectiune. Nu ma dau mare expert, doar am incercat sa impart cunostintele mele cu aceasta comunitate. Daca ele sunt submediocre, atunci ma retrag onorabil. Pace.
    Last edited by johnake; 03-22-2008 at 02:20 PM.
    PHP Code:
    $result mysql_query("SELECT finger FROM hand WHERE id=3");
    echo 
    $result

  4. #4

    Default

    Hai nu te supara acuma. E ok ca aduci contributii la sectiunea asta de tutoriale, chiar apreciem toti chestia asta.
    Trebuie doar sa fii atent ce sfaturi dai pentru ca poti face uneori mai mult rau decat bine.

    Citesc frecvent blogul unui tip de la Microsoft, Raymond Chen (The Old New Thing), care a lucrat inca dinainte sa fie Windows acolo, si deseori sunt uimit de cate artificii si improvizatii trebuie sa faca Microsoft pentru a pastra compatibilitatea cu programe care se folosesc de chestii nedocumentate.

    De exemplu, cand au facut trecerea de la Windows 95 la Windows 98, programatorii au facut un sistem mai bun de Control Panel, insa au observat ca foarte multe drivere video crapau la instalare.

    Testand driverele au observat ca in timpul instalarii, in spatele ferestrei de setup, programele respective deschideau applet-ul de Display Properties, cautau Tab-ul Settings, dadeau click pe tab-ul ala, dadeau click pe Advanced Settings si apoi bifau o optiune acolo. Aceste chestii nu erau necesare deoarece Microsoft oferea functii API pentru a bifa chestia aia, dar programatorii nu au fost suficient de interesati sa caute functiile.
    In Windows 98, nu au mai dat la clasa ferestrei de la Display Properties acelasi nume ca pe Windows 95 (de ex in loc de "cpl_wndDisplay" i-au zis "wndDisplayProps") si pentru ca installerele nu mai gaseau numele clasei crapau.
    Programatorii au trebuit practic pentru compatibilitate sa incarce o fereastra invizibila care avea numele clasei acelasi cu windows 95, fereastra asta captura click-urile, incarca fereastra noua si le pasa mai departe.

    Ce vreau sa zic este ca tot acest cod NU era necesar, dar MS au fost nevoiti sa il adauge pentru compatibilitate cu drivere stricate de programatori prosti. Insa, nu erau obligati.

    La fel ca in cazul de fata, daca multi vor face cum zici tu, Microsoft poate va fi in viitor obligat sa suporte tehnica asta nedocumentata doar pentru ca site-uri si programe sa nu crape (normal ca se da vina pe Microsoft).

    Nu e bine si nu e frumos sa faci asa programe si site-uri, bazandu-te ca MS va suporta la infinit chestii nedocumentate, si in acelasi timp sa nu te gandesti ca poate userul foloseste altceva in loc de MS Excel.
    Buzzwords Ltd, unregistered company in England, Whales and Dolphins
    Value-added, synergistic forward thinking outside of the box solutions for the discerning employer with core competency metrics - touch base or ping us for more information on how you can improve your customer facing intuitive interfaces, transition your e-business mindshare, incentivize revolutionary technologies and evolve e-business solutions.

  5. #5
    Uber Mood johnake's Avatar
    Join Date
    Oct 2007
    Location
    Cum dai coltu', pe dreapta
    Posts
    4,573
    Blog Entries
    4

    Default

    Quote Originally Posted by Penemue View Post
    Hai nu te supara acuma. E ok ca aduci contributii la sectiunea asta de tutoriale, chiar apreciem toti chestia asta.
    Trebuie doar sa fii atent ce sfaturi dai pentru ca poti face uneori mai mult rau decat bine.

    Citesc frecvent blogul unui tip de la Microsoft, Raymond Chen (The Old New Thing), care a lucrat inca dinainte sa fie Windows acolo, si deseori sunt uimit de cate artificii si improvizatii trebuie sa faca Microsoft pentru a pastra compatibilitatea cu programe care se folosesc de chestii nedocumentate.

    De exemplu, cand au facut trecerea de la Windows 95 la Windows 98, programatorii au facut un sistem mai bun de Control Panel, insa au observat ca foarte multe drivere video crapau la instalare.

    Testand driverele au observat ca in timpul instalarii, in spatele ferestrei de setup, programele respective deschideau applet-ul de Display Properties, cautau Tab-ul Settings, dadeau click pe tab-ul ala, dadeau click pe Advanced Settings si apoi bifau o optiune acolo. Aceste chestii nu erau necesare deoarece Microsoft oferea functii API pentru a bifa chestia aia, dar programatorii nu au fost suficient de interesati sa caute functiile.
    In Windows 98, nu au mai dat la clasa ferestrei de la Display Properties acelasi nume ca pe Windows 95 (de ex in loc de "cpl_wndDisplay" i-au zis "wndDisplayProps") si pentru ca installerele nu mai gaseau numele clasei crapau.
    Programatorii au trebuit practic pentru compatibilitate sa incarce o fereastra invizibila care avea numele clasei acelasi cu windows 95, fereastra asta captura click-urile, incarca fereastra noua si le pasa mai departe.

    Ce vreau sa zic este ca tot acest cod NU era necesar, dar MS au fost nevoiti sa il adauge pentru compatibilitate cu drivere stricate de programatori prosti. Insa, nu erau obligati.

    La fel ca in cazul de fata, daca multi vor face cum zici tu, Microsoft poate va fi in viitor obligat sa suporte tehnica asta nedocumentata doar pentru ca site-uri si programe sa nu crape (normal ca se da vina pe Microsoft).

    Nu e bine si nu e frumos sa faci asa programe si site-uri, bazandu-te ca MS va suporta la infinit chestii nedocumentate, si in acelasi timp sa nu te gandesti ca poate userul foloseste altceva in loc de MS Excel.
    Nu am testat pe StarOffice dar OpenOffice il deschide. Stiu ca csv este un format universal acceptat de mai toate aplicatiile office Microsoft si non-Microsoft. Am cautat foarte mult solutii privind exportul datelor din MySQL in format XLS, gata formatat (dupa un tipar definit). Nu stiu daca e cea mai buna solutie, dar pe mine m-a ajutat in compania unde lucrez.
    PHP Code:
    $result mysql_query("SELECT finger FROM hand WHERE id=3");
    echo 
    $result

Similar Threads

  1. Main table
    By cold in forum Dezvoltare
    Replies: 13
    Last Post: 02-02-2009, 08:15 PM
  2. Save MT Giveaway - 1 SCT invite
    By inFormal in forum Punct ochit, punct lovit
    Replies: 63
    Last Post: 12-26-2008, 02:24 AM
  3. Morandi - Save Me
    By Strider23 in forum vB_Tube
    Replies: 0
    Last Post: 09-02-2008, 11:07 PM
  4. Morandi - Save Me
    By Angelitta in forum vB_Tube
    Replies: 0
    Last Post: 06-27-2008, 07:03 PM
  5. GENESYS DISTRIBUTIE prezinta Dell Latitude XT table PC
    By emptysilence in forum Punct ochit, punct lovit
    Replies: 0
    Last Post: 02-22-2008, 08:25 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •