php - export mysql table to xls script

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

php - export mysql table to xls script

Δημοσίευση από heavyaris » 20 Σεπ 2010 14:55

παιδιά, έχω φτιάξει ένα online πελατολόγιο με php+mysql, και αυτό που θα ήθελα να ρωτήσω είναι το εξής:
Στo phpmyadmin, τα αποτελέσματα ενός query μπορούν να γίνουν export σε xls (Microsoft Excel 2000 ).
Εγώ θέλω ακριβώς αυτό! πάνω πάνω στα αποτελέσματα να υπάρχει ένας σύνδεσμος (μαζί με τον σύνδεσμο "εκτύπωση") "export to xls" και μόλις πατάει ο χρήστης να εμφανίζεται το παράθυρο του browser "save as".
δεν έχω ιδέα όμως καν πώς να το αναζητήσω στο google.
ευχαριστώ.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

php - export mysql table to xls script

Δημοσίευση από Apostolis_38 » 21 Σεπ 2010 14:29

Πρόκειται για δύο ξεχωριστές εργασίες.
Πρώτα κάνεις το export των εγγραφών σε ένα αρχείο xls,
μετά το αποθηκεύεις σε ένα συγκεκριμένο φάκελο,
κατόπιν το "δίνεις" στον χρήστη για να το κάνει download.

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

php - export mysql table to xls script

Δημοσίευση από heavyaris » 21 Σεπ 2010 18:58

το παρακάτω script δουλεύει, αλλα όπως ήταν αναμενόμενο, το αρχείο xls εμφανίζει οποιονδήποτε ελληνικό χαρακτηρα σε ?????

Κώδικας: Επιλογή όλων

<?php
// Edit the $Host, $User $Password, $DBName and $TableName vars only! //
$Host = "localhost";
$User = " ";
$Password = " ";
$DBName = " _clients";
$TableName = "clients";


// DO NOT EDIT BELOW HERE //
$link = mysql_connect &#40;$Host, $User, $Password&#41; or die&#40;'Could not connect&#58; ' . mysql_error&#40;&#41;&#41;;
mysql_select_db&#40;$DBName&#41; or die&#40;'Could not select database'&#41;;

$select = "SELECT * FROM `".$TableName."`";
mysql_query&#40;"SET NAMES 'utf8_unicode_ci'"&#41;;
mysql_query&#40;"SET CHARACTER SET 'utf8_unicode_ci'"&#41;;
$export = mysql_query&#40;$select&#41;; 
$fields = mysql_num_fields&#40;$export&#41;; 

for &#40;$i = 0; $i < $fields; $i++&#41; &#123;
    $csv_output .= mysql_field_name&#40;$export, $i&#41; . "\t";
&#125;

while&#40;$row = mysql_fetch_row&#40;$export&#41;&#41; &#123;
    $line = '';
    foreach&#40;$row as $value&#41; &#123;
        if &#40;&#40;!isset&#40;$value&#41;&#41; OR &#40;$value == ""&#41;&#41; &#123;
            $value = "\t"; 
        &#125; else &#123;
            $value = str_replace&#40;'"', '""', $value&#41;;
            $value = '"' . $value . '"' . "\t"; 
        &#125;
        $line .= $value;
    &#125;
    $data .= trim&#40;$line&#41;."\n";
&#125;
$data = str_replace&#40;"\r","",$data&#41;;

header&#40;"Content-Type&#58; application/vnd.ms-excel"&#41;;
header&#40;"Content-Disposition&#58; attachment; filename=database_dump.xls"&#41;;
header&#40;"Pragma&#58; no-cache"&#41;;
header&#40;"Expires&#58; 0"&#41;;
print $csv_output."\n".$data;
exit;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml" lang="el">
<head>
    <title>Download MySQL Table Code</title>
</head>
<body>

</body>
</html>
τι μπορώ να διορθώσω;

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

php - export mysql table to xls script

Δημοσίευση από Apostolis_38 » 21 Σεπ 2010 20:31

Για δοκίμασε αυτό.

Κώδικας: Επιλογή όλων

header&#40;"Content-Type&#58; application/vnd.ms-excel;  charset=utf-8;"&#41;;

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

php - export mysql table to xls script

Δημοσίευση από heavyaris » 22 Σεπ 2010 12:02

μπά, δεν βοήθησε, ανεβάζω ενα screenshot απο την βάση:
Συνημμένα
db.jpg

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

php - export mysql table to xls script

Δημοσίευση από heavyaris » 22 Σεπ 2010 15:03

χμ.. διαπίστωσα κάτι ενδιαφέρων, αν το ανοίξω με word, με ρωτάει encoding και εάν δώσω utf-8 φορτώνει κανονικά..

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

php - export mysql table to xls script

Δημοσίευση από Apostolis_38 » 22 Σεπ 2010 15:39

Δοκίμασε αντί για

Κώδικας: Επιλογή όλων

SELECT * FROM `".$TableName."`
να δώσεις

Κώδικας: Επιλογή όλων

SELECT * INTO OUTFILE "test.xls" FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM table `".$TableName."` "
Πιθανόν να χρειαστεί να αντικαταστήσεις τους χαρακτήρες στα BY ''.

Με αυτό τον τρόπο σώζεις σωστά τα δεδομένα.
Δεν ξέρω όμως μήπως βρείς δυσκολίες με τα rights που έχεις στον server...

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

php - export mysql table to xls script

Δημοσίευση από heavyaris » 22 Σεπ 2010 15:57

μπα...#1045 - Access denied
και φάνηκε σωστό..

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

php - export mysql table to xls script

Δημοσίευση από Apostolis_38 » 22 Σεπ 2010 16:05

Ναι.

Το excel είναι δύστροπο με την κωδικοποίηση.
Δεν μπορείς να το σώσεις σε άλλο format;

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

php - export mysql table to xls script

Δημοσίευση από heavyaris » 22 Σεπ 2010 16:20

βασικά, το θέλω στο excel ωστε μετά να κάνω συγχώνευση αλληλογραφίας στο word και να εκτυπώσω αυτοκόλλητα με διευθύνσεις να κολληθούν στους ταχυδρομικούς φακέλους.

Υ.Γ κάπου διάβασα οτι με το openoffice ανοίγει, θα δω μήπως το σώνει σε κανονικό xls μετα ωστε να κανω την δουλειά μου.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

php - export mysql table to xls script

Δημοσίευση από fafos » 22 Σεπ 2010 17:12

gia prospathise auto:

Κώδικας: Επιλογή όλων

$csv_output = iconv&#40;'utf-8','greek',$csv_output&#41;;
$data = iconv&#40;'utf-8','greek',$data&#41;;
akrivos kato apo to $data = str_replace("\r","",$data);

epishs... vale auto:

Κώδικας: Επιλογή όλων

header&#40;"Content-Transfer-Encoding&#58; binary "&#41;;

kato apo to header("Content-Disposition: attachment; filename=database_dump.xls")
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

php - export mysql table to xls script

Δημοσίευση από dva_dev » 22 Σεπ 2010 17:49

Apostolis_38 έγραψε:Για δοκίμασε αυτό.

Κώδικας: Επιλογή όλων

header&#40;"Content-Type&#58; application/vnd.ms-excel;  charset=utf-8;"&#41;;
Δεν κάνεις και μια δοκιμή να στείλεις με charset=utf-16;

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

php - export mysql table to xls script

Δημοσίευση από heavyaris » 22 Σεπ 2010 17:54

Φίλε fafos είσαι πραγματικός Script Master!!!!!!!!!!!!!!!!!!!!!!
είχα αρχίσει να απελπίζομαι οτι δεν γίνεται τίποτα!
νασαι καλά!!

Υ.Γ γιατί όμως μου σώνει στο excel μόνο 68 εγγραφές απο τις 5812;;
τα άλλα xls παρόλο που είχαν σκουπίδια είχαν όλες τις εγγραφές..

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

php - export mysql table to xls script

Δημοσίευση από fafos » 22 Σεπ 2010 18:11

heavyaris έγραψε:
Υ.Γ γιατί όμως μου σώνει στο excel μόνο 68 εγγραφές απο τις 5812;;
τα άλλα xls παρόλο που είχαν σκουπίδια είχαν όλες τις εγγραφές..
dokimase na katarghseis tous header kai to exit kai ase mono ton kodika apo pano kai to print $csv_output."\n".$data;

des an sou gyrna oles tis eggrafes h petaei kapoio lathos..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

php - export mysql table to xls script

Δημοσίευση από heavyaris » 22 Σεπ 2010 18:16

τωρα βγαζει τις εγγραφες στην οθόνη, δεν βγάζει save as και πάλι τελειώνει σε μια "οδο 24" όπως τελείωνε και το xls, αρα πάλι ίδιες εγγραφές..
γιατί όμως? πώς επηρέασε το encoding τις εγγραφές δεν μπορώ να καταλάβω.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης