Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα με Ελληνικούς Χαρακτήρες σε excel εχπορτ

Îåêßíçóå áðü ôï ìÝëïò thanad. Τελευταία δημοσίευση από το μέλος thanad στις 08-12-2005, 13:44. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-12-2005, 19:40 7634

    Πρόβλημα με Ελληνικούς Χαρακτήρες σε excel εχπορτ

    Καλησπέρα σε όλους,

    Πρώτα απ' όλα θερμά συγχαρητήρια στον χαζομπαμπά Patric για την όμορφη κόρη του που με τόση περηφάνια περιέλαβε στη χθεσινή του παρουσίαση. Patric να σου ζήσει.

    Στη συνέχεια μπράβο στους Γιώργο Καπνιά και Αντώνη Χατζηπαυλή για τις παρουσιάσεις τους και για την όλη παρουσία τους στο event καθώς και στα υπόλοιπα παιδιά που ήταν εκεί.

    Στο κυριώς θέμα όμως:

    Όπως είχα γράψει και σε προηγούμενο Post έχω μια shared function που δίνω σαν παραμέτρους ένα dataset και το response και μου κάνει export τα περιεχόμενα του dataset σε excel.

    Ο κώδικξ :

    Public Shared Sub ExportToMsExcel(ByVal ds As System.Data.DataSet, ByVal response As System.Web.HttpResponse, ByVal FileName As String)

     Dim NameOfFile As String
     response.Clear()
     response.Charset = ""
     response.Cache.SetCacheability(HttpCacheability.NoCache)
     response.ContentType = "application/vnd.ms-excel"

     Dim stringWrite As New System.IO.StringWriter
     Dim htmlWrite As New System.Web.UI.HtmlTextWriter(stringWrite)
     Dim dg As New System.Web.UI.WebControls.DataGrid
     dg.EnableViewState = False
     dg.DataSource = ds
     dg.DataBind()
     NameOfFile = "attachment;filename=" & FileName
     response.AddHeader("Content-disposition", NameOfFile)
     dg.RenderControl(htmlWrite)
     response.Write(stringWrite.ToString)
     response.End()

    End Sub

    Έχω και ένα πίνακα στη βάση μου, όπου γεμίζει μέσω DDS απο ένα excel απο iSeries (κοινώς AS400 σύστημα) και ο οποίος περιέχει items.

    Σε διάφορα σημεία της εφαρμογής μου, υπάρχουν querys τα οποία κάνουν join με τον συγκεκριμένο πίνακα και τραβούν 2 πεδία του, τα πεδία code & description.

    Μέσα στην εφαρμογή όλα παίζουν ο.κ. Όταν όμως προσπαθήσω γεμίζωντας ένα dataset να κάνω export σε excel δεδομένα τα οποία έχουν προέλθει απο query που κάνει join με τον συγκεκριμμένο πίνακα και περιέχουν τα 2 προαναφερόμενα πεδία (σημειωτέον πως στο databind στο grid όλα είναι ο.κ) όλα τα ελληνικά αυτομάτως μεταφράζονται σε traditional chinese, κοινώς κινέζικα.

    Δοκίμασα διάφορα, αλλά τίποτα.

    Θα εκτιμούσα ιδιαίτερα κάθε βοήθεια.

    Σας ευχαριστώ, εκ των προτέρων.

    Σας επισυνάπτω και σχετικό αρχείο στο οποίο τα 2 πρώτα πεδία προέρχονται απο τον συγκεκριμένο πίνακα.

     


    (thanad)
    Dimos K. Thanasoulas
    Athens
  •  07-12-2005, 20:21 7635 σε απάντηση της 7634

    Απ: Πρόβλημα με Ελληνικούς Χαρακτήρες σε excel εχπορτ

    Το βασικότερο πρόβλημα είναι ότι αυτό που στέλνεις στον client δεν είναι ένα αρχείο excel αλλά ένα text αρχείο το οποίο τον αναγκάζεις να ανοίξει στο Excel μέσω του header. Τώρα το τί θα περιέχει το text αρχείο ποικίλει. Άλλος βάζει λίστα με delimiters, άλλος βάζει HTML table. Η τεχνική αυτή άλλοτε δουλεύει, άλλοτε όχι. Αν π.χ. κάποιο πεδίο περιέχει και το delimiter, ή αν περιέχει χαρακτήρες που απαγορεύονται μέσα σε ένα κελί HTML, το excel δεν καταφέρνει να μεταφράσει το αρχείο.

    Στην περίπτωση σου για κάποιο λόγο το excel κολλάει στο encoding του HTML πίνακα. Το λιγότερο, αυτό θα πρέπει να είναι το ίδιο με το encoding που έχεις ορίσει για το Response. Ένας τρόπος να δεις τί συμβαίνει είναι να τρέξεις τον κώδικα χωρίς το ContentType για να δεις τί μορφή έχει πραγματικά το HTML table.

    Οι μόνες σίγουρες λύσεις πάντως είναι αυτές που έχουμε ξανασυζητήσει σε άλλα post, είτε να χρησιμοποιήσεις τον OLE DB driver του Excel για να γράψεις σε ένα καινούριο excel χρησιμοποιώντας SQL statements είτε να δημιουργήσεις και να στείλεις ένα αρχείο xml σύμφωνα με το schema του Excel. Το τελευταίο βέβαια σε περιορίζει μόνο στη χρήση των τελευταίων εκδόσεων του Excel, αλλά είναι και ο πιο ευέλικτος τρόπος να γυρίσεις πραγματικό excel.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  07-12-2005, 20:21 7636 σε απάντηση της 7634

    Απ: Πρόβλημα με Ελληνικούς Χαρακτήρες σε excel εχπορτ

    Το response.Charset = "" γιατί είναι κενό;
    Χρήστος Γεωργακόπουλος
  •  07-12-2005, 20:23 7637 σε απάντηση της 7636

    Απ: Πρόβλημα με Ελληνικούς Χαρακτήρες σε excel εχπορτ

    Στο web.config σου, τι έχεις στο globalization section;
    Χρήστος Γεωργακόπουλος
  •  07-12-2005, 21:09 7641 σε απάντηση της 7634

    Απ: Πρόβλημα με Ελληνικούς Χαρακτήρες σε excel εχπορτ



    Το response.Charset = "" γιατί είναι κενό;

    H default τιμή του είναι utf-8. Στο παράδειγμα που έχω παραπάνω η τιμή είναι κενή, αφού δοκίμαζα διάφορα. Έχω δοκιμάσει και με τιμές όπως "iso-8859-7" "Windos-1253".


    Οι μόνες σίγουρες λύσεις πάντως είναι αυτές που έχουμε ξανασυζητήσει σε άλλα post, είτε να χρησιμοποιήσεις τον OLE DB driver του Excel για να γράψεις σε ένα καινούριο excel χρησιμοποιώντας SQL statements είτε να δημιουργήσεις και να στείλεις ένα αρχείο xml σύμφωνα με το schema του Excel. Το τελευταίο βέβαια σε περιορίζει μόνο στη χρήση των τελευταίων εκδόσεων του Excel, αλλά είναι και ο πιο ευέλικτος τρόπος να γυρίσεις πραγματικό excel.

    Πως μπορώ να το κάνω αυτό;


    Σας ευχαριστώ και τους τρείς !!!

    (thanad)
    Dimos K. Thanasoulas
    Athens
  •  07-12-2005, 21:13 7642 σε απάντηση της 7637

    Απ: Πρόβλημα με Ελληνικούς Χαρακτήρες σε excel εχπορτ

    Στο web.config το globalization section έχει :

    "<globalization requestEncoding="utf-8" responseEncoding="utf-8" />"


    (thanad)
    Dimos K. Thanasoulas
    Athens
  •  08-12-2005, 01:01 7647 σε απάντηση της 7634

    Απ: Πρόβλημα με Ελληνικούς Χαρακτήρες σε excel εχπορτ

    Το μεγαλύτερο "τρελό" που συμβαινει είναι πως σε άλλο σημείο της εφαρμογής, κάνω export σε excel άλλο dataset το οποίο τραβά τα 2 πεδία που προανέφερα απο τον προβληματικό πίνακα και όλα είναι Ο.Κ.
    Αν γεμίσω ενα ds με "select * from items" και το κάνω export, βλέπω πάλι ΚΙΝΕΖΙΚΑ.......................................................................................
    (thanad)
    Dimos K. Thanasoulas
    Athens
  •  08-12-2005, 10:15 7656 σε απάντηση της 7647

    Απ: Πρόβλημα με Ελληνικούς Χαρακτήρες σε excel εχπορτ

    Δήμο,

    κατ' αρχήν να δηλώσω άγνοια για τη DB2 και τα datatypes της.

    Υπάρχει περίπτωση σε αυτό τον πίνακα τα text data να είναι Unicode ενώ στους άλλους να είναι 8-bit; Κάτι τέτοιο μπορεί να προκαλούσε σύγχυση.


    Νατάσα Μανουσοπούλου
  •  08-12-2005, 12:07 7660 σε απάντηση της 7641

    Απ: Πρόβλημα με Ελληνικούς Χαρακτήρες σε excel εχπορτ

    Κάνε ένα search για "Excel export" και θα βρεις αρκετά threads πάνω στο ίδιο θέμα. Στο "Export Datagrid to Excel" έχουν συζητηθεί (και με κώδικα) όλες οι λύσεις: csv αρχεία, σύνδεση μέσω OLE DB ακόμα και Excel Automation. Επίσης υπάρχουν εκεί links σε άρθρα του MSDN που περιγράφουν την κάθε λύση.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  08-12-2005, 13:44 7667 σε απάντηση της 7660

    Απ: Πρόβλημα με Ελληνικούς Χαρακτήρες σε excel εχπορτ

    Μετά απο αρκετό ψάξιμο και επειδή τα δεδομένα προέρχονται απο μια DB2 σε ένα iSeries (i5/os) κατέληξα στο εξής.
    Ο πελάτης μου, που έχει κάνει export το αρχείο σε excel, κάνωντας χρήση του ODBC driver for iSeries μέσα απο το excel του, δεν δηλώνει σωστά το encoding που θέλει να κάνει το export. Δοκίμασα στο "δικό μου" 400άρι την όλη διαδικασία και ο κώδιξ που έχω στην αρχή του post παίζει ο.κ.

    Βέβαια η απορία μου ακόμη μένει, γιατί άλλο export που κάνει join με τον ίδιο πίνακα πάιζει κανονικά.

    Πάντως σας ευχαριστώ όλους για τις απαντήσεις σας.
    (thanad)
    Dimos K. Thanasoulas
    Athens
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems