2009-02-23 8 views

Répondre

3

changer la contenttype de votre page ASP.Net

Response.ContentType = "application/ms-excel" 
+0

Il convient également de noter que certaines personnes (GASP!) N'ont pas Excel, alors peut-être que vous devriez simplement le jeter dans un fichier CSV et les laisser le découvrir. – hunter

+0

Vous voulez probablement également vous assurer que vous générez une table brute qu'Excel peut comprendre. –

+0

Vous devez faire plus que cela. Sinon, le "document Excel" exporté inclura des liens vers des images sur votre site, des filtres, des boutons, etc – Tundey

0

Reporting Services SQL Server serait la meilleure façon d'exporter des données à partir d'une application dans Excel. Si vous n'avez pas accès à/ne souhaitez pas utiliser les services de reporting en fonction des données que vous souhaitez extraire/formater en utilisant éventuellement une structure CSV au lieu d'Excel, cela peut être plus facile.

0

Utilisez les dll Microsoft.Office.Interop.Excel pour créer des fichiers Excel avec vos données et fournir des liens pour télécharger les fichiers en utilisant la méthode de téléchargement de Hunter Daley ...

0

En tant que solution générale, vous voudrez peut-être envisagez d'écrire le gestionnaire (ashx) pour l'exportation - et transmettez les paramètres de requête pour recréer la requête afin de générer les données ou un identificateur pour récupérer les données du cache (s'il est mis en cache). Selon que CSV est suffisant pour votre exportation Excel, vous pouvez simplement formater les données et les renvoyer, en définissant le ContentType comme suggéré par @Hunter ou utiliser les assemblys d'interopérabilité primaires (qui nécessiteraient Excel sur le serveur) pour construire une véritable feuille de calcul Excel. le sérialiser vers le flux de réponse.

0

Je préfère utiliser une chaîne de connexion OLEDB.

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Excel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"; 
0

Vous ne savez pas sur l'exportation d'une page, mais si vous voulez juste d'exporter un jeu de données ou datatable

 HttpContext.Current.Response.Clear() 
     HttpContext.Current.Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", fileName)) 
     HttpContext.Current.Response.ContentType = "application/ms-excel" 

     Dim sw As StringWriter = New StringWriter 
     Dim htw As HtmlTextWriter = New HtmlTextWriter(sw) 


     Dim table As Table = New Table 

     table.RenderControl(htw) 

     ' render the htmlwriter into the response 
     HttpContext.Current.Response.Write(sw.ToString) 
     HttpContext.Current.Response.End() 
3

Un de mes blogs les plus populaires est comment générer un document Excel à partir du code .NET, en utilisant le balisage XML Excel (ce n'est pas OpenXML, il est XML standard Excel) - http://www.aaron-powell.com/linq-to-xml-to-excel

je créer un lien aussi large à un moyen plus facile de le faire avec VB 9.

Bien que ce soit le code .NET 3.5, il pourrait facilement être fait en .NET 2.0 en utilisant XmlDocument et en créant les nœuds de cette façon.

Ensuite, il suffit de définir les bons en-têtes de réponse et de les renvoyer en continu dans la réponse.

+0

La démo VB9 est géniale! – JBRWilkinson

+0

Juste une note, mais ce lien n'est plus valide ... –

+0

@KyleC fixe, il utilisait l'URL de mon ancien blog –

1

SpreadsheetGear pour .NET le fera. Vous pouvez trouver un tas d'exemples ASP.NET en direct avec C# & source VB.NET sur this page.

Disclaimer: Je possède SpreadsheetGear LLC

0

J'utilise presque exactement le même code que CodeKiwi. Je l'utiliserais si vous avez un DataTable et que vous voulez le diffuser dans le navigateur client. Si vous voulez un fichier, vous pouvez également faire une simple boucle à travers chaque ligne/colonne, créer un fichier CSV et je suppose fournir un lien vers le client - vous pouvez utiliser une extension de fichier CSV ou XLS. Ou si vous diffusez le fichier résultant au client, il les invitera à l'ouvrir ou à l'enregistrer sur le disque. Les interops sont (bien que la dernière fois que je les ai essayés) parfaits pour les petits jeux de données, mais n'ont pas bien évolué - horriblement lent pour les jeux de données plus volumineux.

1

Si vous pouvez afficher vos données dans un contrôle GridView, il prend en charge de façon inhérente "clic droit -> Exporter vers Excel" sans avoir à écrire du code.

Questions connexes