Avatar billede tendal Nybegynder
25. september 2006 - 22:59 Der er 10 kommentarer og
1 løsning

Export MySQL til excel

Hej
Jeg leder efter et php script der kan få data fra min mysql server over i excel. Jeg vil gerne hvis man evt trykker på et link som kunne hedde noget i retningen af export til excel og så får man en pop up med mulighed for at downloade filen - kan man det?
Avatar billede michaeltryl Seniormester
25. september 2006 - 23:05 #1
du kan gøre sådan her
åben phpmyadmin
find den tabel du ønsker at export til exel
klik på eksporter øverst
vælg Microsoft Excel 2000
komprmering = intet
klik udfør

nu kan du gemme en exel fil på din hardisk som indeholder slle tabel data
ved ikke hvordan du kan sætte et link på
jeg smider dette som et svar hvis det er noget du kan bruge
Avatar billede tendal Nybegynder
25. september 2006 - 23:16 #2
Helt så let er det desværre ikke - denne fremgangmåde vil jo kræve at jeg benytter phpmyadmin hver gang der skal exporteres noget og det er jo ikke lige det der er meningen for det kan være meget forskellige data der skal hentes fra websted - brugeren sammensætter så at sige selv det der skal exporteres
Avatar billede coderdk Praktikant
25. september 2006 - 23:17 #3
Prøv med:

<?php

    // Connect osv
   
    $sql = "SELECT * FROM dintabel";
    $qh = mysql_query( $sql ) or die( mysql_error() );
    $first = true;
   
    header( "Expires Wed, 6 Sep 2000 11:11:11 GMT" );
    header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
    header( "Pragma: no-cache");
    header( "Content-Type: text/csv" );
    header( "Content-Disposition: inline; filename=\"data.csv\"" );

    while ( $row = mysql_fetch_assoc( $qh ) )
    {
        if ( $first )
        {
            $cols = array();
            foreach ( $row as $key => $val )
            {
                $cols[] = "\"$key\"";
            }
            echo implode( ",", $cols ) . "\r\n";
            $first = false;
        }
        $cols = array();
        foreach ( $row as $key => $val )
        {
            $cols[] = "\"" . str_replace( '"', '\"', $val ) . "\"";
        }
        echo implode( ",", $cols ) . "\r\n";
    }
   
?>
Avatar billede coderdk Praktikant
25. september 2006 - 23:17 #4
header( "Expires Wed, 6 Sep 2000 11:11:11 GMT" );

skal være:

header( "Expires: Wed, 6 Sep 2000 11:11:11 GMT" );
Avatar billede tendal Nybegynder
25. september 2006 - 23:32 #5
ja det ser ud til at ligne noget, men der kommer ikke nogen popup så man kan downloade - data bliver bare skrevet ud på skærmen
Avatar billede coderdk Praktikant
25. september 2006 - 23:40 #6
Prøv at ændre:

header( "Content-Type: text/csv" );

til:

header( "Content-Type: application/x-excel" );

eller

header( "Content-Type: application/x-msdownload" );

og se hvad der sker :)
Avatar billede tendal Nybegynder
25. september 2006 - 23:51 #7
ja ja nu er vi ved at være der - der er bare lige det problem at det hele ser en anelse underligt ud i excel - data bliver godt nok lagt ind i nye rækker men i celler - kan man gøre noget ved det?
Avatar billede coderdk Praktikant
26. september 2006 - 01:44 #8
Du kan prøve at udskifte:

echo implode( ",", $cols ) . "\r\n";

med:

echo implode( ";", $cols ) . "\r\n";

og se om det gør en forskel - Excel kan godt importere dem jeg har lavet, men så skal du gøre noget aktivt...
Avatar billede tendal Nybegynder
26. september 2006 - 09:04 #9
Det hjalp desværre ikke
Avatar billede tendal Nybegynder
27. september 2006 - 00:05 #10
Men sammensat med lidt andet fra phpfreak lykkedes det - så smid lige et svar så får du sgu point
Avatar billede coderdk Praktikant
27. september 2006 - 09:04 #11
Cool :) Men tag nogle af pointene selv, så :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester