Exporter une gridview vers Excel ou Word
Par fa7al le jeudi 15 octobre 2009, 11:32 - .NET - Lien permanent
Quel beau composant que la GridView :)
Combien d'utilisateurs ont pu souvent nous dire "Ca serait bien de
pouvoir exporter ce tableau sur Excel" ... avant avec ASP... on tirait
une peu la gueule. Maintenant avec ASP.Net on serait presque tentés de
tout exporter vers Excel tellement c'est enfantin :)
La preuve ci-dessous :
On supose que l'on veut exporter vers Excel une gridview nommée "grdData". Créer un button ou un imagebutton, sur le onClick, il suffit de mettre ce code :
Attention, si vous travaillez avec Ajax et que votre gridview est dans un UpdatePanel, le bouton d'export devra être HORS du UpdatePanel (logique, mais il fallait y penser)
Pour exporter vers Word, il suffit de remplacer les lignes :
et
On supose que l'on veut exporter vers Excel une gridview nommée "grdData". Créer un button ou un imagebutton, sur le onClick, il suffit de mettre ce code :
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=fichierExcel.xls");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite =new HtmlTextWriter(stringWrite);
grdData.AllowPaging = false;
grdData.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
Attention, si vous travaillez avec Ajax et que votre gridview est dans un UpdatePanel, le bouton d'export devra être HORS du UpdatePanel (logique, mais il fallait y penser)
Pour exporter vers Word, il suffit de remplacer les lignes :
Response.AddHeader("content-disposition", "attachment;filename=fichierExcel.xls");
par
Response.AddHeader("content-disposition", "attachment;filename=fichierWord.doc");
et
Response.ContentType = "application/vnd.xls";
par
Response.ContentType = "application/msword";