Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

προσπαθώ να περάσω τα δεδομένα του πινακα σε 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";


?>

Δημοσ.

Η εμπειρία μου στην 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);

Δημοσ.

Τα εμφάνισε κανονικά τώρα .Ευχαριστώ πολύ!το excel δεν υπάρχει εξαρχής, δημιουργείται αφού τρέξει το script και κατεβαίνει στην περιοχή του χρήστη (ουτως η αλλως δεν θελω να υπάρχει στην περιοχή του server). Οσο για το encoding του excel υπάρχει περίπτωση να μην παιζει σωστά σε άλλη έκδοση ? τώρα χρησιμοποιώ excel 2003 .

Δημοσ.

Απο τη στιγμή που τα μετατρέπεις σε Windows-1253 και ο υπολογιστής στον οποίο ανοίγει έχει Regional Settings Greek, μου φαίνεται δύσκολο να μην εμφανιστεί σωστά.

 

Αν όμως ο υπολογιστής που θα ανοίξει το excel δεν έχει Regional Settings Ελληνικά τότε θεωρώ πως μπορεί να εμφανίσει πάλι κινέζικα.

 

(Γιατί νομίζω ότι όταν το excel ανοίγει αρχείο κειμένου όπως αυτό που στέλνεται απο τη σελίδα, το ανοίγει με το default encoding του συστήματος. Διαφορετικά σε ρωτάει με τι encoding θες να το ανοίξει)

 

Δοκίμασε το στο pc σου αλλάζοντας τα Regional Settings και βλέπεις.

Δημοσ.

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. Καλό καλοκαίρι!

Δημοσ.

Δοκίμασε εάν θέλεις τη βιβλιοθήκη PHPExcel για να αποθηκεύεις τα δεδομένα σου σε "κανονικό" αρχείο Excel. Ίσως να είναι λίγο overkill για τη δουλειά που το θέλεις, αλλά σου δίνει αρκετές δυνατότητες που ενδεχομένως να σε βολέψουν (χρώματα σε κελιά, ρύθμιση πλάτους κελιών, σύμπτυξη κελιών, πολλαπλές καρτέλες, ...).

Δημοσ.

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

Δημοσ.

Βασικά μας ενδιαφέρει σε τι encoding στέλνουμε το αρχείο.

 

Ενδεχομένως όμως να μας ενδιαφέρει και το default encoding του συστήματος γιατί ίσως με αυτό ανοίγει (όταν δε σε ρωτάει με τι) το excel.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...