Problème avec les caractères accentués dans un export Excel

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Problème avec les caractères accentués dans un export Excel

Messagepar mike76 » 10 Août 2010 à 16:57

Bonjour,

Je suis sur une appli web en 8.5.1 FP4

J'utilise mon export Excel dans une xPage comme décrit dans ce lien :
http://forum.dominoarea.org/export-excel-directement-dans-le-navigateur-avec-une-xpage-t25724.html#130654

Ca fonctionne très bien à part le fait que dans une des colonnes j'ai des accents, ce qui fait que dans le résultat de mon fichier excel les caractères accentués sont remplacés par des caractères bizarres.
Je pense qu'il faut que j'encode mes données, mais à quel endroit ?
Merci d'avance pour votre aide.
Dernière édition par mike76 le 11 Août 2010 à 09:09, édité 2 fois.
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Messagepar amahi » 10 Août 2010 à 17:12

Ajoute un type UTF-8 dans tes entetes ?
@Novaliance
amahi
Empereur des posts
Empereur des posts
 
Message(s) : 1032
Inscrit(e) le : 08 Jan 2007 à 16:57
Localisation : Region parisienne

Messagepar mike76 » 11 Août 2010 à 08:34

salut

j'ai mis cette ligne dans mon code:
Code : Tout sélectionner
response.setHeader("Content-Type","application/vnd.ms-excel; charset=utf-8");


mais toujours le même problème

même chose avec :
Code : Tout sélectionner
response.setHeader("Content-Type","application/vnd.ms-excel; charset=iso-8859-15");
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Messagepar mike76 » 11 Août 2010 à 09:02

j'ai ajouté :
Code : Tout sélectionner
writer.write("<meta charset=UTF-8>");


et ça fonctionne nickel
merci encore pour la piste amahi
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Messagepar stloje » 11 Août 2010 à 09:06

essaie avec ceci :

Code : Tout sélectionner
response.setHeader("Content-Type","application/vnd.ms-excel; charset=ISO-8859-1");


Public Function cleanText (Byval caract As String, Byval forceISOCaract As Boolean) As String
      Dim tmp As String
      Dim i As Integer
      Dim debut As Boolean
      Dim ISOCarac As Boolean
      
      debut = False
      For i = 1 To Len(caract)
         tmp = Mid$ (caract, i, 1)
         'on s'assure que les caractères ne font pas partis d'une balise HTML
         If tmp = ">" Then debut = False
         If tmp = "<" Then debut = True
         
         'est-on dans une balise?
         If debut = False Then
            'on vérifie si on doit forcer la transformation en ISO
            If forceISOCaract = True Then
               'est-ce qu'il y a déjà eu l'entête de ISO?
               If ISOCarac = False Then
                  cleanText = CleanText & "=?ISO-8859-1?Q?"
                  ISOCarac = True
               End If
            End If
            If Instr(|azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN1234567890 <>;,:?./%=|, tmp) = 0 Then
               cleanText = cleanText & "&#x" & Hex$ (Uni (tmp)) & ";"
            Else
               cleanText = cleanText & tmp
            End If 
         End If
      Next
      'on termine le bloc concernant ISO
      If forceISOCaract = True Then cleanText = cleanText + "?="      
   End Function
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans

Messagepar mike76 » 11 Août 2010 à 09:09

salut

je viens d'essayer avec ta solution mais ça ne fonctionne pas

juste cette ligne suffit :
Code : Tout sélectionner
writer.write("<meta charset=UTF-8>");
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Messagepar mike76 » 11 Août 2010 à 09:10

par contre autre chose maintenant, le fichier excel s'ouvre en lecture seule, y a-t-il un moyen qu'il s'ouvre normalement (en écriture) ?
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Messagepar stloje » 13 Août 2010 à 07:55

Ca serait pas du à la nouvelle ligne ajoutée?

mike76 a écrit:
Code : Tout sélectionner
writer.write("<meta>");
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans

Messagepar mike76 » 13 Août 2010 à 08:32

salut

je reviens de refaire un test et maintenant ça s'ouvre bien en écriture, bizarre :roll:

par contre j'ai un message à l'ouverture du fichier excel
je suis en excel 2007
si je réponds oui à la question ça focntionne bien
comment faire pour ne plus avoir ce message ??
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Messagepar amahi » 13 Août 2010 à 08:41

Creer un fichier excel tous simple et enregistre le au format HTML.
Regarde les entetes spécifique (il y on as un paquet) et ajoute les a ton fichier generé.
@Novaliance
amahi
Empereur des posts
Empereur des posts
 
Message(s) : 1032
Inscrit(e) le : 08 Jan 2007 à 16:57
Localisation : Region parisienne

Messagepar mike76 » 13 Août 2010 à 08:43

salut

pas bête ton idée je fais ça de suite
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Messagepar mike76 » 13 Août 2010 à 08:59

Code : Tout sélectionner
writer.write('<meta name="Excel Workbook Frameset">');
writer.write('<meta http-equiv=Content-Type content="text/html; charset=windows-1252">');
writer.write('<meta name=ProgId content=Excel.Sheet>');
writer.write('<meta name=Generator content="Microsoft Excel 12">');


j'ai mis ceci mais pas mieux
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Messagepar mike76 » 13 Août 2010 à 09:02

autre info j'ai récupéré le code erreur de la messagebox excel, c'est le 101786

pour info pour récupérer le code erreur d'une messagebox dans excel il suffit de combiner les touches :
<CTRL><SHIFT><I>
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Messagepar stloje » 13 Août 2010 à 09:17

Je me souviens d'avoir fait quelque chose de similaire. Je regarde du vieux codes et te l'envoi!
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans

Messagepar mike76 » 13 Août 2010 à 09:30

super sympa
merci
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Suivant

Retour vers Développement

cron