Générer un fichier CSV dans ASP.Net
Je suis en utilisant le code ci-dessous sur une page aspx sur l'événement clic du bouton pour générer le fichier csv. Cela fonctionne lorsque je n'ai pas le nom de mon fichier, mais lorsque j'essaie d'utiliser:
Réponse.AddHeader("Content-Disposition", "attachment;filename=monfichier.csv");
pour nommer le fichier monfichier.csv, la feuille excel généré est la capture d'écran de la page web au lieu d'avoir le texte. Quelqu'un peut-il m'aider avec ce problème.
Merci!
DataGrid dg = new DataGrid();
dg.DataSource = GetData();
htmlTextWriter.WriteLine("<b>Details</b>");
//Get the html for the control
dg.HeaderStyle.Font.Bold = true;
dg.HeaderStyle.BackColor = System.Drawing.Color.Gray;
dg.DataBind();
dg.RenderControl(htmlTextWriter);
//Write the HTML back to the browser.
Response.Clear();
Response.ContentType = "application/vnd.ms-excel";
//Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
this.EnableViewState = false;
Response.Write(textWriter.ToString());
Response.End();
private System.Data.DataTable GetData()
{
System.Data.DataTable dt = new System.Data.DataTable("TestTable");
dt.Columns.Add("SSN");
dt.Columns.Add("Employee ID");
dt.Columns.Add("Member Last Name");
dt.Columns.Add("Member First Name");
dt.Columns.Add("Patient Last Name");
dt.Columns.Add("Patient First Name");
dt.Columns.Add("Claim No.");
dt.Columns.Add("Service Line No.");
dt.Columns.Add("Error Code");
dt.Columns.Add("Error Message");
dt.Rows.Add(123456789,4455,"asdf","asdf","sdfg","xzcv","dsfgdfg123",1234,135004,"some error");
dt.Rows.Add(123456788,3344,"rth","ojoij","poip","wer","aadf124",1233,135005,"Some Error");
dt.Rows.Add(123456787,2233,"dfg","sdfg","vcxb","cxvb","UHCAL125",1223,135006,"another error");
return dt;
}
source d'informationauteur user1178192
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas exactement sûr de ce que vous visez ici, donc j'ai supposé que vous êtes désireux de créer un fichier CSV dans un événement clic du bouton et l'envoyer à l'utilisateur. Ce que vous avez actuellement semble écrire dans le code HTML de la commande dans un fichier XLS.
Essayez ceci:
Lorsque je l'exécute, je suis invité par le navigateur pour enregistrer le fichier CSV.
Edit:
Si vous souhaitez maintenir votre approche actuelle (qui est la production de HTML, pas de CSV), puis essayez ceci:
Remarque que j'ai simplement changé l'extension de fichier CSV en XLS. Lors de l'utilisation de l'extension CSV, le texte paru dans Excel au format HTML. À l'aide de XLS, il semble juste comme il le fait lorsque la ligne ci-dessus est commenté.
Même que NickW de la solution, mais de façon plus concise, à l'aide de LINQ:
Enfin je pense que j'ai tout compris, nous avons besoin d'écrire un gestionnaire http si nous avons l'intention de générer des fichiers excel sur asp.net pages, maintenant mon button_click redirige simplement à TestHandler.ashx page et il rend le fichier excel. 🙂
Merci beaucoup à vous tous vous guyz
Essayez de changer ce:
Ou