Page 1 sur 2

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

MessagePublié: 10 Août 2010 à 16:57
par mike76
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.

MessagePublié: 10 Août 2010 à 17:12
par amahi
Ajoute un type UTF-8 dans tes entetes ?

MessagePublié: 11 Août 2010 à 08:34
par mike76
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");

MessagePublié: 11 Août 2010 à 09:02
par mike76
j'ai ajouté :
Code : Tout sélectionner
writer.write("<meta charset=UTF-8>");


et ça fonctionne nickel
merci encore pour la piste amahi

MessagePublié: 11 Août 2010 à 09:06
par stloje
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

MessagePublié: 11 Août 2010 à 09:09
par mike76
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>");

MessagePublié: 11 Août 2010 à 09:10
par mike76
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) ?

MessagePublié: 13 Août 2010 à 07:55
par stloje
Ca serait pas du à la nouvelle ligne ajoutée?

mike76 a écrit:
Code : Tout sélectionner
writer.write("<meta>");

MessagePublié: 13 Août 2010 à 08:32
par mike76
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 ??

MessagePublié: 13 Août 2010 à 08:41
par amahi
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é.

MessagePublié: 13 Août 2010 à 08:43
par mike76
salut

pas bête ton idée je fais ça de suite

MessagePublié: 13 Août 2010 à 08:59
par mike76
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

MessagePublié: 13 Août 2010 à 09:02
par mike76
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>

MessagePublié: 13 Août 2010 à 09:17
par stloje
Je me souviens d'avoir fait quelque chose de similaire. Je regarde du vieux codes et te l'envoi!

MessagePublié: 13 Août 2010 à 09:30
par mike76
super sympa
merci