2011-01-06 5 views
2

j'implémenter la fonctionnalité pour exporter des données de gridview à feuille Excel en .net sortie application.Rendered de gridview à la page est donnée ci-dessous:Exporter vers Excel aide dans GridView

alt text

ne se soucient pas en-tête et pied de page comme je montre une petite partie de gridview. et les données exportées dans Excel feuilles est:

alt text

code dans la page ASPX est la colonne de monnaie particulière dans la grille vue est:

<asp:TemplateField HeaderText="Value" > 
    <HeaderStyle HorizontalAlign="Left" CssClass="lblBoldTextLeftPadding clsGridHeaderDashboard" /> 
    <ItemTemplate> 
     £<%# Eval("Value") %> 
    </ItemTemplate> 
    <ItemStyle CssClass="lblNormalTextLeftPadding" Width="10%" VerticalAlign="Top" HorizontalAlign="Left" /> 
</asp:TemplateField> 

Comme vous pouvez le voir dans Excel feuille la la valeur de la colonne de devise est [100 €] mais dans la vue de grille [100 €]. Est-ce que quelqu'un peut me suggérer comment pouvons-nous supprimer "Â" de sortie de feuille Excel.

J'utilise le code suivant pour l'exportation functionaity:

Response.Clear() 
Response.AddHeader("content-disposition", "attachment;filename=Report.xls") 
Response.Charset = "" 
Response.Cache.SetCacheability(HttpCacheability.NoCache) 
Response.ContentType = "application/vnd.xls" 
Dim objStringWriter As StringWriter = New StringWriter(sb) 
Dim objHtmlTextWriter As HtmlTextWriter = New HtmlTextWriter(objStringWriter) 
gvBidTrackingExcel.DataSource = Getdata() 
gvBidTrackingExcel.DataBind() 
gvBidTrackingExcel.RenderControl(objHtmlTextWriter) 
Response.Write(objStringWriter) 
Response.End() 

Répondre

2

Essayez de définir un jeu de caractères et le type d'encodage après votre Response.ContentType:

HttpContext.Current.Response.Charset = "utf-8"; 
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250"); 

Sinon:

Si cela ne fonctionne pas essayer de les définir comme champ de texte. Peut-être qu'ils sont rendus comme float/doubles.

Voici un exemple d'une itération qui établit une classe à toutes les cellules avant d'exporter (Vous devez personnaliser mes échantillons afin qu'ils travaillent pour votre solution)

foreach(GridViewRow row in gridView.Rows) 
{ 
    if(row.RowType == DataControlRowType.DataRow) 
    { 
     for(int columnIndex = 0; columnIndex < row.Cells.Count; columnIndex++) 
     { 
      row.Cells[columnIndex].Attributes.Add("class", "text"); 
     } 
    } 
} 

Ajouter la classe de style à votre document après avoir rendu de votre GridView

table.RenderControl(htmlTextWriter); 
string style = @"<style> .text { mso-number-format:\@; text-align:left; } </style> "; 
HttpContext.Current.Response.Write(style); 
0

J'ai eu exactement le même problème en remplaçant £ avec la version unicode, qui est & # 163; semblait faire l'affaire, c'est-à-dire

myTempStr = Replace(myTempStr, "£", "&amp;#163;") 
Questions connexes