none
Copier/coller de code html dans Word via application winform - Caractères accentués en japonais... RRS feed

  • Question

  • Bonjour,

    Nous avons une application winform avec :

    • une fonction qui créer un tableau html
    • Une fonction qui créer le bon format Html pour le clipboard
    • Une fonction qui colle dans un document Word

    Cependant, depuis la dernière mise à jour Windows ou Office, nous avons certains caractères accentués qui apparaissent après collage comme caractère spécifique chinois ou japonais.

    Fonction de Collage

    clipDo.SetData(DataFormats.Html, mod_clipboard.HtmlClipboardData(htmltable));
                        Clipboard.SetDataObject(clipDo, true);
                        WordApp.Selection.PasteSpecial(ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref pasteType,
                                ref oMissing, ref oMissing);
                    }

    mod_clipboard.HtmlClipboardData(htmltable)

    cette fonction retourne du code HTML qui est fonctionnel.


    Malgré des tests avec changement du charset, cela n'a aucune conséquence...

    Nous obtenons le résultat avec des caractères en japonais alors qu'il y a encore quelques jours nous n'avions aucun problème.

    Merci pour votre aide.

    lundi 18 mai 2015 16:16

Toutes les réponses

  • Fonction HtmlClipboardData

    internal static string HtmlClipboardData(string html)
            {
                StringBuilder sb = new StringBuilder();
                //Encoding encoding = Encoding.Default;
                Encoding encoding = Encoding.GetEncoding("utf-8");
                string Header = @"
                                    Version: 1.0
                                    StartHTML: {0:000000}
                                    EndHTML: {1:000000}
                                    StartFragment: {2:000000}
                                    EndFragment: {3:000000}
                                    ";
                string HtmlPrefix = @"
                                    <!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN""
                                    <html>
                                    <head>
                                    <meta http-equiv=""Content-Type"" content=""text/html; charset={0}"" />
                                    <head>
                                    <style>
                                    #articles
                                    {{
                                     width:100%;
                                     border-collapse:collapse;
                                    }}
                                    #articles td, #articles th 
                                    {{
                                     font-size:0.8em;
                                     border:1px solid #000000;
                                     padding:3px 7px 2px 7px;
                                    }}
                                    #articles th 
                                    {{
                                     font-size:0.82em;
                                     text-align:left;
                                     padding-top:5px;
                                     padding-bottom:4px;
                                     color:#000000;
                                    }}
                                    #articles tr.alt td 
                                    {{
                                     background-color:#FFFFFF;
                                    }}
                                    #articles tr.alt td.image 
                                    {{
                                     text-align:center;
                                     background-color:#FFFFFF;
                                     padding-top:0px;
                                     padding-bottom:0px;
                                    }}
                                    #articles tr.nor td
                                    {{
                                     background-color:white;
                                    }}
                                    #articles tr.alt td.left
                                    {{
                                     text-align:left;
                                    }}
                                    #articles tr.alt td.right
                                    {{
                                     text-align:right;
                                    }}
                                    </style>
                                    <body>
                                    <!--StartFragment-->
                                    ";
    
    
                HtmlPrefix = string.Format(HtmlPrefix, encoding.WebName);
    
                string HtmlSuffix = @"
                                    <!--EndFragment-->
                                    </body>
                                    </html>
                                    ";
    
                // Get lengths of chunks
                int HeaderLength = encoding.GetByteCount(Header);
                HeaderLength -= 16; // extra formatting characters {0:000000}
                int PrefixLength = encoding.GetByteCount(HtmlPrefix);
                int HtmlLength = encoding.GetByteCount(html);
                int SuffixLength = encoding.GetByteCount(HtmlSuffix);
    
                // Determine locations of chunks
                int StartHtml = HeaderLength;
                int StartFragment = StartHtml + PrefixLength;
                int EndFragment = StartFragment + HtmlLength;
                int EndHtml = EndFragment + SuffixLength;
    
                // Build the data
                sb.AppendFormat(Header, StartHtml, EndHtml, StartFragment, EndFragment);
                sb.Append(HtmlPrefix);
                sb.Append(html);
                sb.Append(HtmlSuffix);
                //MessageBox.Show(sb.ToString());
                //Console.WriteLine(sb.ToString());
                return sb.ToString();
            }

    lundi 18 mai 2015 16:22
  • Une Idée??
    mardi 19 mai 2015 08:14
  • Bonjour, 

    avez vous essayé de convertir les caractères spéciaux en code HTML 

    Les valeurs : http://www.commentcamarche.net/contents/489-caracteres-speciaux-html

    En c# : https://msdn.microsoft.com/en-us/library/7c5fyk1k.aspx

    https://msdn.microsoft.com/en-us/library/73z22y6h(v=vs.110).aspx

    mardi 21 juillet 2015 16:01