ASP.NET export Excel de codage de problème
Je suis en train de faire certaines Exportations Excel sur le ASP.NET Site.
Tout fonctionne à l'exception de l'Encodage. Quand je l'ouvre dans Excel, il ressemble à ceci:
Eingabe Kosten je Gerät Gerät:
Gerätebezeichnung:
Betriebsmittel Heizöl de â': 4
Dieselverbrauch en â': 4
C'est mon code:
Response.Clear();
Response.ContentType = "application/ms-excel";
Response.AddHeader("Content-Disposition", "inline;filename=NachkalkGeraete.xls;");
var writer = new HtmlTextWriter(Response.Output);
SomeControl.RenderControl(writer); /* FormView, Table, DataGrid... */
Response.End();
J'ai déjà essayé de définir explicitement l'Encodage.. mais aucune modification n'est survenue:
Response.Clear();
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=NachkalkGeraete.xls");
Response.BufferOutput = true;
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Charset = "UTF-8";
EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
SomeControl.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
Ce qui est faux, s'il vous plaît?
Vous devez vous connecter pour publier un commentaire.
Ainsi que j'ai découvert que le problème pourrait être dans l'en-tête du fichier excel, qui ne contient pas de NOMENCLATURE séquence d'octets (au début du fichier représentant le codage utilisé).
Alors j'en ai fait de cette façon et ça fonctionne pour moi:
ContentEncoding
) & 5 (BinaryWrite
) et a été surpris de constater qu'il ne fonctionne pas. Excellent travail sur la recherche de cette solution. Le Respect! 🙂Avez-vous essayé le réglage de l'encodage dans une balise meta dans le code HTML?
Excel ne verrez pas les en-têtes de réponse, de sorte qu'il ne sait pas ce que le
Response.Encoding
est. La balise meta permet de le savoir.Pour les cas où l'UTF8 est nécessaire...
J'ai eu le même problème avec l'espagnol personnages et résolu avec cette ligne de code.
espère que cette aide
ajouter
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
Vous pouvez essayer d'utiliser de Serveur".HtmlDecode" pour décoder ces mots comme "João"