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

 

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

culture - excel vs datatable (Old format or invalid type library)

Îåêßíçóå áðü ôï ìÝëïò gianestras. Τελευταία δημοσίευση από το μέλος gianestras στις 17-03-2010, 10:12. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  17-03-2010, 09:32 57720

    culture - excel vs datatable (Old format or invalid type library)

    Καλημέρα καλημέρα...

    Στη προσπάθεια μου να γεμίσω ένα Excel file σε ένα Datatable 'τρώω' το Error: Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) .

    Χρησιμοποιώ MS Ofiice 2007 Αγγλικά και το Visual studio 2005.

    Όταν το culture του υπολογιστή είναι ΕΝ-US τότε δεν υπάρχει κανένα προβλημα

    Όταν όμως το culteure του υπολογιστή είναι στα ελληνικά το μου παρουσιάζεται το παραπάνω πρόβλημα (  την ώρα που θα χρησιμοποιηθέι η εντολή

    while (Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[r, c]).Value2).Trim() != "")  ). Να σημειώσω και πάλι πως όταν τα culture των MS Office και του υπολογιστή είναι ίδια τότε ολα πάνε ρολόι!!!!!!!!!!

     

    Για τον λόγο αυτό (αν δλδ τα culture είναι διαφορετικά) θα πρέπει να μετατρέψω το culture του υπολογιστή στο ίδιο culture με αυτό των MS Office:

    System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;

    string lang_pc = oldCI.EnglishName;//to culture to ipologisti

     

    app = new Microsoft.Office.Interop.Excel.ApplicationClass();

    LanguageSettings langSettings = (LanguageSettings)app.LanguageSettings;

    id_office = langSettings.get_LanguageID(MsoAppLanguageID.msoLanguageIDUI);

    CultureInfo lang_offi = CultureInfo.GetCultureInfo(id_office);

    string lang_office = lang_offi.EnglishName;//to culture ton office

     

    if (lang_office != lang_pc)

    {

               System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(id_office);

    }

    (παρακάτω στο κώδικα μου ξαναμετατρέπω το culture του υπολογιστή στο παλιό του cultrure.....!!)

    Αυτός ο κώδικας τρέχει μια χαρά αλλάζει το culture του υπολογιστή αλλά παίρνω το ίδιο πρόβλημα. Κάτι που παρατήρησα είναι πως όταν αλλάζω το culture  του υπολογιστή μέσα από τα Windows XP, χρειάζεται μετά να κάνω restart το μηχάνημα. Οπότε υποθέτω πως αυτό εδώ System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(id_office); , παρόλο που το αλλάζει και το βλέπω, αλλα δε το αλλάζει ουσιαστικά.

    Έχει κανείς καμιά ιδεά??

  •  17-03-2010, 10:00 57722 σε απάντηση της 57720

    Απ: culture - excel vs datatable (Old format or invalid type library)

    μήπως χρησιμοποιείς background worker?


    Antonios Chatzipavlis

  •  17-03-2010, 10:12 57723 σε απάντηση της 57722

    Απ: culture - excel vs datatable (Old format or invalid type library)

    Ναι Αντώνη έχεις δίκιο!!! αυτό ήταν το πρόβλημα!!!! Χρησιμοποιώ backgroundworker (για την βαριά δουλεία)... 

    Οπότε έκανα την αλλαγή του CurrentThread.CurrentCulture μέσα στον backgroundworker και λειτούργησε μια χαρα!!

    Ευχαριστώ!!! 

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems