IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[DELPHI] [EXCEL] Codage décodage des langues


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 29
    Points
    29
    Par défaut [DELPHI] [EXCEL] Codage décodage des langues
    Bonjour

    J'ai un fichier Excel (retour de chez les traducteurs) qui nous donnent la traduction en 8 langues, dont le chinois, japonais et russe) des quelques 6000 textes utilisés par notre logiciel.

    Aujourd'hui toutes les traductions sont reportées par copié / collé du fichier Excel vers des fichiers .ini sous notepad ++

    Je voudrais automatiser et lire le fichier excel et générer les fichiers INI par programme.
    J'utilise GetActiveOleObject('Excel.Application')

    J'accède sans problème au fichier Ecel
    J'accède sans problème à l'ensemble de mes cellules

    Mais pour les textes Chinois, Japonais et Russe, je n'arrive pas à récupérer les bons "string"

    J'utilise un range pour aller plus vide
    lStr := lArrayValeur[xi, lColonneDE + 6];

    lArrayValeur : Array of Variant
    J'ai essayé lStr en String, WideChar.

    Rien, juste des points d'interrogation


    Avez vous une piste
    Dominique

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Peut être un problème d'unicode ?

    Pourquoi ne pas utiliser directement le TExcelApplication (uses Excel2010) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    var
      Excel : TExcelApplication;
      Page  : TExcelWorkbook;
      ID, i : integer;
    begin
      Excel := TExcelApplication.Create(nil);
      Page := TExcelWorkbook.Create(nil);
     
      try
        ID := GetUserDefaultLCID;
        Excel.Visible[ID] := False;
     
        Page.ConnectTo(Excel.Workbooks.Open('mon_fichier.xls',
                       emptyparam, emptyparam, emptyparam, emptyparam,
                       emptyparam, emptyparam, emptyparam, emptyparam,
                       emptyparam, emptyparam, emptyparam, emptyparam, ID));
     
        // récupération de la valeur des cellules
        for i := 1 to 500 do // si fichier de 500 lignes
        begin
          ShowMessage(Page.Worksheets[1] as _Worksheet).Cells.Item[i, 2]); // pour la 2eme colonne
        end;
     
        Excel.Visible[lcId] := true;
        Page.Close;
        Page.Disconnect;
        Excel.Quit;
        Excel.Disconnect;
      finally
        Page.Free;
        Excel.Free;
      end;
    end;

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 696
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 696
    Points : 13 135
    Points
    13 135
    Par défaut
    Ne pourrais-tu pas exporter ce fichier en csv et le traiter par une petite routine Delphi ?
    Tu pourrais même le charger dans une TTable

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Version de Delphi ? 2009 ou plus ?
    Ou s'affiche les ??? signe d'une perte d'UNICODE vers ANSI

    Pour le TTable, faut du CSV en , et pas en ; si je me souviens bien
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Bonjour

    Delphi D6

    Oui, pour moi c'est bien un problème d’Unicode.

    Je viens d'essayer TExcelApplication, le résultat est le même, des points d’interrogation.

    Convertir en CSV, ça ne fonctionne pas, les caractères sont perdus dans le CSV

    Pour faire simple, voilà un extrait de d'une feuille

    File Key Section Traduction en : Anglais Traduction it : Italien Traduction fr : Français Traduction zh-CHS : Chinois (Simplifié)
    ALARME 0 AlarmeTxt Undefined alert Allarme indefinito Alarme indéterminée 未定义报警

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 696
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 696
    Points : 13 135
    Points
    13 135
    Par défaut
    Citation Envoyé par dlambert Voir le message
    Convertir en CSV, ça ne fonctionne pas, les caractères sont perdus dans le CSV
    Dommage et surprenant qu'Excel ne permette pas de choisir le codage du fichier csv. LibreOffice le permet !

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/05/2013, 07h50
  2. VLC activeX et delphi: lire un DVD avec choix des langues
    Par positivisme dans le forum Composants VCL
    Réponses: 0
    Dernier message: 31/03/2009, 14h47
  3. [XSLT] Comment procéder pour gérer des langues ?
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/03/2005, 11h01
  4. Réponses: 7
    Dernier message: 30/12/2004, 12h01
  5. [Collections] Methode inconnue dans le tutorial Delphi Excel
    Par myuils dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 04/11/2004, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo