pankanell Δημοσ. 19 Ιουλίου 2012 Δημοσ. 19 Ιουλίου 2012 προσπαθώ να περάσω τα δεδομένα του πινακα σε excel αλλα μου τα ελληνικα μου τα βγαζει κινέζικα στην κωδικοποίηση. η βάση μου ειναι σε utf8_general_ci ..Έχω δοκιμάσει να το αλλάξω σε unicode_general_ci αλλά πάλι το ιδιο. Παραθέτω τον κωδικά > <?php $conn=mysql_connect("localhost","user","pass") or die (mysql_error()); mysql_select_db("dbname",$conn) or die(mysql_error()) ; mysql_query("SET CHARACTER SET 'utf8'"); mysql_query("SET NAMES 'utf8'"); $select = "SELECT * FROM hotels"; $export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( ) ); $fields = mysql_num_fields ( $export ); for ( $i = 0; $i < $fields; $i++ ) { $header .= mysql_field_name( $export , $i ) . "\t"; } while( $row = mysql_fetch_row( $export ) ) { $line = ''; foreach( $row as $value ) { if ( ( !isset( $value ) ) || ( $value == "" ) ) { $value = "\t"; } else { $value = str_replace( '"' , '""' , $value ); $value = '"' . $value . '"' . "\t"; } $line .= $value; } $data .= trim( $line ) . "\n"; } $data = str_replace( "\r" , "" , $data ); if ( $data == "" ) { $data = "\n(0) Records Found!\n"; } header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=export.xls"); header("Pragma: no-cache"); header("Expires: 0"); print "$header\n$data"; ?>
moukoublen Δημοσ. 19 Ιουλίου 2012 Δημοσ. 19 Ιουλίου 2012 Η εμπειρία μου στην PHP είναι ελαχιστη. Πάντως εδώ απ ότι βλέπω καταρχήν δεν φτιάχνεις excel. Ένα tab delimited αρχείο φτιάχνεις που βάζοντας στο header σαν όνομα αρχείο *.xls το ανοίγει αυτόματα με το excel (η περίπου έτσι). Αντίστοιχα το excel ανοίγοντας ένα tab delimited αρχείο το χωρίζει σε κουτάκια. Επειδή όμως τα δεδομένα που στέλνεις είναι UTF-8 ίσως το excel by default να τα διαβάζει με άλλο encoding. Δοκίμασε αν γίνεται να μετατρέψεις το string $data σε encoding windows-1253. > iconv("UTF-8", "ISO-8859-7", $data) ή > iconv("UTF-8", "Windows-1253", $data) Δηλαδή > . . . print iconv("UTF-8", "Windows-1253", $header) . "\n" . iconv("UTF-8", "Windows-1253", $data);
pankanell Δημοσ. 19 Ιουλίου 2012 Μέλος Δημοσ. 19 Ιουλίου 2012 Τα εμφάνισε κανονικά τώρα .Ευχαριστώ πολύ!το excel δεν υπάρχει εξαρχής, δημιουργείται αφού τρέξει το script και κατεβαίνει στην περιοχή του χρήστη (ουτως η αλλως δεν θελω να υπάρχει στην περιοχή του server). Οσο για το encoding του excel υπάρχει περίπτωση να μην παιζει σωστά σε άλλη έκδοση ? τώρα χρησιμοποιώ excel 2003 .
moukoublen Δημοσ. 19 Ιουλίου 2012 Δημοσ. 19 Ιουλίου 2012 Απο τη στιγμή που τα μετατρέπεις σε Windows-1253 και ο υπολογιστής στον οποίο ανοίγει έχει Regional Settings Greek, μου φαίνεται δύσκολο να μην εμφανιστεί σωστά. Αν όμως ο υπολογιστής που θα ανοίξει το excel δεν έχει Regional Settings Ελληνικά τότε θεωρώ πως μπορεί να εμφανίσει πάλι κινέζικα. (Γιατί νομίζω ότι όταν το excel ανοίγει αρχείο κειμένου όπως αυτό που στέλνεται απο τη σελίδα, το ανοίγει με το default encoding του συστήματος. Διαφορετικά σε ρωτάει με τι encoding θες να το ανοίξει) Δοκίμασε το στο pc σου αλλάζοντας τα Regional Settings και βλέπεις.
defacer Δημοσ. 19 Ιουλίου 2012 Δημοσ. 19 Ιουλίου 2012 Let's say you want to export the id, name and email fields from your users table to a CSV file. Here is your code: > SELECT id, name, email INTO OUTFILE '/tmp/result.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY ‘\\’ LINES TERMINATED BY '\n' FROM users WHERE 1 Stolen from http://ariejan.net/2008/11/27/export-csv-directly-from-mysql/ Ρίχτα σε CSV, άνοιξέ το με το Excel. Φτιάξε ένα mojito και άσε τους άλλους να παιδεύονται με PHP. Καλό καλοκαίρι!
macabre_sunsets Δημοσ. 19 Ιουλίου 2012 Δημοσ. 19 Ιουλίου 2012 Δοκίμασε εάν θέλεις τη βιβλιοθήκη PHPExcel για να αποθηκεύεις τα δεδομένα σου σε "κανονικό" αρχείο Excel. Ίσως να είναι λίγο overkill για τη δουλειά που το θέλεις, αλλά σου δίνει αρκετές δυνατότητες που ενδεχομένως να σε βολέψουν (χρώματα σε κελιά, ρύθμιση πλάτους κελιών, σύμπτυξη κελιών, πολλαπλές καρτέλες, ...).
pankanell Δημοσ. 19 Ιουλίου 2012 Μέλος Δημοσ. 19 Ιουλίου 2012 Οποτέ ουσιαστικά μας ενδιαφέρουν οι ρυθμίσεις του υπολογιστή κι όχι ο κώδικας .ευχαριστω για τη βοήθεια!
moukoublen Δημοσ. 19 Ιουλίου 2012 Δημοσ. 19 Ιουλίου 2012 Βασικά μας ενδιαφέρει σε τι encoding στέλνουμε το αρχείο. Ενδεχομένως όμως να μας ενδιαφέρει και το default encoding του συστήματος γιατί ίσως με αυτό ανοίγει (όταν δε σε ρωτάει με τι) το excel.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα