2008-12-12 11 views
1

Je suis en train de rendre un fichier Excel dans le navigateur. J'utilise le Response.Writefile (filePath) pour le dod. Il fonctionne parfaitement bien dans quelques machines. Je reçois un pop-up avec "Ouvrir", "Enregistrer" et "Annuler" option.Rendre le fichier Excel

Mais en cas de quelques machines après avoir fait une sauvegarde, cliquez sur le popup une page vide reste ouverte. Cela n'arrive que dans quelques machines. Cette fenêtre scintille dans l'autre machine et se ferme toute seule. S'il vous plaît laissez-moi savoir ce qui peut être fait pour éviter que cette page vide soit fermée par elle-même après l'ouverture ou l'enregistrement du fichier.

Répondre

2

Définissez-vous des en-têtes HTTP? Si ce n'est pas le cas, vous comptez sur le navigateur pour interpréter les données correctement.

Pour dire au navigateur que vous envoyez du contenu Excel:

Response.ContentType = "application/x-excel"; 

Pour indiquer au navigateur pour traiter la réponse comme téléchargement:

Response.AddHeader("content-disposition", "inline; filename=\"" + YourSuggestedFileName + "\""); 

Les machines qui vous trouble probablement ne sais pas quoi à faire avec les données Excel.

+0

Cela est bien passé. mais j'ai toujours un problème. Quand ceci s'ouvre dans une page séparée d'explorateur, j'ai besoin d'obtenir l'option pour enregistrer le dossier en tant que dossier de fichier.xls. Mais quand je me connecte à l'application, je désactive la barre de menu. Y at-il de toute façon je peux l'activer seulement pour cette seule page? – Vinodtiru

+0

Cela fonctionne également dans ASP.NET MVC 3, comme vous l'avez signalé. Très utile. – Kezzer

0

Le problème avec cette approche est que les champs de date et les champs numériques sont tous rendus sous la forme d'une chaîne. L'utilisateur final doit alors modifier explicitement le type de ces champs s'il veut les trier.

Si vous avez le budget, je suggère d'utiliser un composant comme: Aspose.Cells

Questions connexes