Exporter vers CSV tourne et "<>" caractères vers Ascii

J'ai un button sur ma page Web qui permet aux users d'exporter un tableau de données sur CSV afin qu'il puisse être ouvert dans Excel. Le problème est que certaines inputs dans le tableau (en particulier la colonne "commentaires") contiennent des caractères spéciaux. Les caractères répertoriés dans le titre sont convertis en ASCII lorsque j'exporte et j'ouvre datatables dans Excel. Est-ce que, dans mon code, est-ce que je peux empêcher que cela ne se produise ou qu'il faudrait quelque chose que les users traitent d'eux-mêmes? Voici la fonction qui fait l'export:

public void ExportToCSV(object sender, EventArgs e) { SsortingngBuilder builder = new SsortingngBuilder(); ssortingng strFileName = "GridViewExcel_" + DateTime.Now.ToShortDateSsortingng() + ".csv"; builder.Append("Date,High,Low,Average,Freeze Index, Sum FI, Thaw Index, Sum TI,Conditions, Comments" + Environment.NewLine); foreach (GridViewRow row in GridView1.Rows) { ssortingng date = "=" + "\"" + row.Cells[0].Text + "\""; ssortingng high = row.Cells[1].Text; ssortingng low = row.Cells[2].Text; ssortingng average = row.Cells[3].Text; ssortingng fi = row.Cells[4].Text; ssortingng sumfi = row.Cells[5].Text; ssortingng ti = row.Cells[6].Text; ssortingng sumti = row.Cells[7].Text; ssortingng conditions = "\"" + row.Cells[8].Text + "\""; ssortingng comments = "\"" + row.Cells[9].Text + "\""; builder.Append(date + "," + high + "," + low + "," + average + "," + fi + "," + sumfi + "," + ti + "," + sumti + "," + conditions + "," + comments + Environment.NewLine); } Response.Clear(); Response.ContentType = "text/csv"; Response.AddHeader("Content-Disposition", "attachment;filename=" + strFileName); Response.Write(builder.ToSsortingng()); Response.End(); } 

Les données sont encodées dans GridView afin qu'elles puissent s'afficher correctement sur la page. Afin d'utiliser correctement datatables pour le CSV, vous devez décoder.

Vous pouvez utiliser la méthode HttpServerUtility.HtmlDecode pour ce faire

 var comments = $"\"{HttpServerUtility.HtmlDecode(row.Cells[9].Text)}\"" 

Essaye ça

  Response.Clear(); Response.ContentType = "text/csv"; Response.AddHeader("Content-Disposition", "attachment;filename=" + strFileName); Response.ContentEncoding = Encoding.Unicode; Response.BinaryWrite(Encoding.Unicode.GetPreamble()); Response.Write(builder.ToSsortingng()); Response.End();