begin process at 2010 02 09 17:34:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

Divers

 > 

Autre

 > 

Export EXCEL d'un GridView


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Export EXCEL d'un GridView

lundi 18 décembre 2006 à 16:04:50 | Export EXCEL d'un GridView

gabiset

Bonjour, j'utilise un GridView pour afficher le résultat d'une requête sur une base de données, et j'aimerais exporter ce tableau vers Excel. Toutes les discussions que j'ai trouvées à ce sujet sur le forum utilisent un DataGrid et appliquent la méthode suivante :

HttpContext.Current.Response.Clear()
HttpContext.Current.Response.Buffer = True
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"
HttpContext.Current.Response.Charset = ""
Dim sw As New StringWriter
Dim tw As New UI.HtmlTextWriter(sw)
MonGridView.RenderControl(tw)
HttpContext.Current.Response.Write(sw.ToString())
HttpContext.Current.Response.End()

Si je mets un DataGrid, cela marche parfaitement. Mais si je mets un GridView, alors j'obtiens le message d'erreur suivant :"Control 'MonGridView' of type 'GridView' must be placed inside a form tag with runat=server." Pourtant, mon GridView est bien dans un form qui comporte runat=server...
Pour info, j'utilise le GridView car je peux modifier son aspect selon mes souhaits contrairement au datagrid...
J'ai essayé d'insérer sur ma page un DataGrid, copie de mon GridView mais sans mise en forme, avec le param Visible=False (puisque je ne veux pas voir ce tableau mais seulement mon GridView), mais dans ce cas l'export du DataGrid ne marche plus...
Quelqu'un peut-il me dire comment faire pour appliquer la méthode d'export Excel sur un GridView ?
Merci d'avance.
lundi 18 décembre 2006 à 16:30:14 | Re : Export EXCEL d'un GridView

gabiset

J'ai fini par trouver, alors je donne la réponse car cela peut servir à d'autres ;-)

Je crée un nouveau dataset à partir du datatable qui compose mon gridview, et je crée à la volée un datagrid lié à ce dataset :

            export As New DataGrid
            monDataSet = New DataSet()
            monDataSet.Tables.Add(maTableResult)
            export.DataSource = monDataSet
            export.AllowSorting = False
            export.DataBind()
et ensuite j'applique le code donné tout-à-l'heure pour l'export Excel sur mon datagrid export :
            export.RenderControl(tw)
Et ça marche !
lundi 18 décembre 2006 à 16:37:37 | Re : Export EXCEL d'un GridView

zigxag

Bonjour,
je pense que le probleme vient du fait que tu effaces le HTTPResponse avec la methode Clear(), et que tu essayes ensuite d'utiliser le GridView (corrigez moi si je me trompe...)

Pour tester, essaye de stocker ton gridview en session (apres son DataBind), puis, avant d'ecrire MonGridView.RenderControl(tw), recupere d'abord ce gridview de ta session.

Tiens moi au courant !

zigxag

lundi 18 décembre 2006 à 17:02:18 | Re : Export EXCEL d'un GridView

gabiset

Salut zigxag, je ne pense pas que le problème vienne du HTTPResponse puisque en laissant ce code sur un DataGrid cela fonctionne...
Merci quand-même.
jeudi 4 janvier 2007 à 17:22:37 | Re : Export EXCEL d'un GridView

lassaad83

Membre Club
Salut,

Je suis bloqué sur un probleme d'export vers Excels depuis un petit bou de temps, alors j'ai quand meme réussi a faire un export grace a ce code :

PrivateSub ExportEx_Cmd_Click(ByVal sender As System.Object, ByVal e As   
 System.Web.UI.ImageClickEventArgs)
Handles
ExportEx_Cmd.Click
               ' On désactive la pagination
DataGrid3.AllowPaging =
False
' On relance la recherche pour avoir tout les information dans le DataGrid
Session().Add("Recherche", "Oui")
Search(
Nothing
)
Session().Remove("Recherche")
' On appelle de verifColonne avec le nom du DataGrid concerné en paramètre
VerifColonne(DataGrid3)
' On efface les éventuelles données déjà dans la mémoire tampon
Response.Clear()
' On place tout ce qui est destiné au client dans la mémoire tampon
Response.Buffer =
True
' On définit le type d'informations renvoyée, ici des données au format Excel
Response.ContentType = "application/vnd.ms-excel"
'Response.ContentType = "application/msword"
' On efface le jeux de caractères actuellement défini
Response.Charset = ""
' On instancie deux objets qui vont nous permettre de récupérer les données du DataGrid :
' le StringWriter et l'HtmlTextWriter
Dim monStringWriter As StringWriter = New
StringWriter
Dim monHtmlTextWriter As HtmlTextWriter = New
HtmlTextWriter(monStringWriter)
' On extrait le contenu du DataGrid dans l'HtmlTextWriter
DataGrid3.RenderControl(monHtmlTextWriter)
' On copie le contenu extrait dans la mémoire tampon
Response.Write(monStringWriter.ToString())
' On ferme "le flux" de données et envoi les données au client
Response.End()
' On réactive la pagination
DataGrid3.AllowPaging =
True
End
Sub


PrivateSub VerifColonne(ByVal MonDataGrid As Control)
' On récupère le nombre de controles enfants composant le DataGrid
Dim NbControls AsInteger
= MonDataGrid.Controls.Count - 1
While
NbControls >= 0
VerifColonne(MonDataGrid.Controls(NbControls))
NbControls = NbControls - 1
End
While
' Si la cellule ne contient pas du texte simple
IfNot (TypeOf MonDataGrid Is TableCell)
Then
' Si le controle concerné à une prorpiété "Selected Item" alors...
' Remarque : Seul les controles offrant des choix multiples ont une propriété "SelectedItem"
IfNot (MonDataGrid.GetType().GetProperty("SelectedItem") IsNothing)
Then
Dim controleLitteral1 As LiteralControl = New
LiteralControl
MonDataGrid.Parent.Controls.Add(controleLitteral1)
Try
' La cellule prend alors pour valeur le texte correspondant à la propriété "SelectedItem"
controleLitteral1.Text = CType
(MonDataGrid.GetType().GetProperty("SelectedItem").GetValue
MonDataGrid,
Nothing), String
)
controleLitteral1.Text = ""
Catch monException As
Exception
' On récupère l'exception en cas de problème
Response.Write(monException.Message)
End
Try
' Le controle concerné est retiré
MonDataGrid.Parent.Controls.Remove(MonDataGrid)
Else
' Si le controle concerné n'a pas de propriété "SelectedItem" alors on récupère le
' texte (s'il y en a un) de sa propriété "Text"
IfNot (MonDataGrid.GetType().GetProperty("Text") IsNothing)
Then
Dim controleLitteral2 As LiteralControl = New
LiteralControl
MonDataGrid.Parent.Controls.Add(controleLitteral2)
' On attribue le texte de la propriété "Text" à la cellule concernée
If (CType(MonDataGrid.GetType().GetProperty("Text").GetValue(MonDataGrid, Nothing), strring)).Length > 20
Then
controleLitteral2.Text = ""
Else
controleLitteral2.Text = CType
(MonDataGrid.GetType().GetProperty("Text").GetValue
MonDataGrid,
Nothing), String
)
End
If
MonDataGrid.Parent.Controls.Remove(MonDataGrid)
End
If
End
If
End
If
End
Sub


Cependant un probleme perssiste : ce code ne prend pas en charge les caracteres spéciaux, alors résultat des courses j'ai un fichier excel qui me sert pratiquement a rien !!

Est ce que quelqu'un aurais une petite idée de comment on peu résoudre ce probleme? ou un lien qui pourais m'aider..

MERCI ...
mardi 15 janvier 2008 à 17:23:09 | Re : Export EXCEL d'un GridView

etcefala

Try [ Lien ] to get a real gridview export to XML Excel 2003 or XLSX Excel 2007 format.



mercredi 23 juillet 2008 à 09:42:03 | Re : Export EXCEL d'un GridView

larry_31



 Larry_31
Informaticien
Musicien
Amuseur public
San-Antoniovore
Extermine les c... (et y a du boulot !!!)


Cette discussion est classée dans : excel, datagrid, gridview, response, current


Répondre à ce message

Sujets en rapport avec ce message

Exporter un datagrid vers un fichier excel [ par tournevice ] Salut à tousJe suis confronté à un petit souci technique. En gros, je dispose d'un datagrid remplit et pour lequel je génère un fichier Excel. Jusque Help : Remplir excel d'une datagrid mais dans une nouvelle fenetre [ par Xavleb ] Bonjour,Voila le pb: je veut que excel s'ouvre dans une nouvelle fenetre. le transfert des données de la datagrid vers excel c'est ok, seulement excel Pb copier un datagrid dans excel et ouvrir excel dans un nouvelle fenetre [ par Xavleb ] Bonjour,Voila le pb: je veut que excel s'ouvre dans une nouvelle fenetre. le transfert des données de la datagrid vers excel c'est ok, seulement excel pb export excel datagrid à,cause pagination [ par corysala ] Bonjour à tous,J'aimerais savoir comment faire pour exporter la totalité des données d'un Da export vers une feuille d'un fichier excel existant [ par mniajnaa ] bonjour tout le monde j'ai une application web en c# sous dotnet qui permet d'exporter une gridview vers un fichier excel  . j'ai commencé à foui Exporter un tableau vers Excel [ par banekodeih ] Bonjour,Voilà mon problème : J'ai une page aspx dans laquelle j'ai un tableau asp créé dynamiquement et des boutons et des menus déroulantes. Je voudr Export d'un Gridview dans un fichier Excel en conservant la mise en page des cellules [ par clementhindie ] Bonjour à tout le monde.Dans le cadre d'une application Web reposant sur ASP.NET 2.0, j'ai besoin d'exporter un Gridview dont certaines lignes sont en export vers de lien contenu dans gridview [ par frederic91 ] Bonjour,J'ai un gridview qui contient des colonnes de liens, lorsque j'exporte mon gridview vers excel les liens sont perdu (j'ai que du texte brut da comment récupérer des données oracle dans un gridView en mode connecté/deconnecté [ par teentown ] Salut à tous,Je débute en asp.net et j'ai un petit projet à développer.en mode http connexion/ session user /requete sql /deconnexion/ chargement d'un datagrid ou gridview? [ par achora2006 ] bonjour je suis débutante en programmation je réalise maintenent un site asp.net en  vb.net avec visuel studio 2005.je veux savoir la différence entre


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,602 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales