Erreur EPPlus lors de la sortie .XLSX à la réponse
J'ai un étrange problème ici à l'aide de EPPlus pour créer certains .Fichiers XLSX. J'ai un forfait en cours de création, et puis en cours de sortie pour la réponse.
J'ai créé un package comme suit:
var file = new FileInfo(@"C:\Test.xlsx");
ExcelPackage package = new ExcelPackage(file);
//...code to output data...//
package.Save();
Cela enregistre le fichier sur mon local C: lecteur correctement, et quand je l'ai ouverte, il fonctionne très bien. Aucune erreur ou quoi que ce soit, la mise en forme est correcte, etc.
Cependant, je souhaite maintenant sortie de ce fichier dans le flux de réponse donc j'ai modifié le code, je devais ressembler à ceci:
ExcelPackage package = new ExcelPackage();
//...code to output data...//
MemoryStream result = new MemoryStream();
package.SaveAs(result);
context.Response.Clear();
context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
context.Response.AddHeader("Content-Disposition", "attachment;filename=MissionDetails.xlsx");
result.WriteTo(context.Response.OutputStream);
context.Response.End();
MAIS lorsque j'exécute CE code j'obtiens le message suivant lorsque vous essayez d'ouvrir le fichier Excel:
Excel trouvé du contenu illisible dans filename.xlsx. Voulez-vous récupérer le contenu de ce classeur? Si vous faites confiance à la source de ce classeur, cliquez sur Oui
En cliquant sur oui, puis affiche l'invite suivante:
Ce fichier ne peut être ouvert à l'aide de Microsoft Excel. Voulez-vous rechercher le site Web Microsoft Office Online pour un convertisseur qui peut ouvrir le fichier?
Je sélectionne No
ici, puis il ouvre le fichier Excel et affiche cette erreur:
Excel fichier complété niveau de validation et de réparation. Certaines parties de ce classeur peut avoir été réparé ou mis au rebut.
MAIS le fichier puis charge très bien et semble être correctement formaté et tout et tout. Mais chaque fois que j'essaie d'ouvrir le fichier, il donne le même invites et message d'erreur.
Remarque: Le code pour afficher les données ne change pas une ni l'autre de ces scénarios.
Quelqu'un a vu quelque chose comme cela? Ou avez aucune idée de ce que pourrait causer cette option pour enregistrer le fichier incorrecte seulement lors de la sortie à la réponse?
source d'informationauteur j00b | 2012-07-18
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution à ce problème! Comme prévu, il avait quelque chose à voir avec la réponse, comme je l'ai été en mesure d'ouvrir le fichier lors de l'enregistrement en local, mais pas à travers la réponse.
Ici, le problème est que mon code était enveloppé dans une try..catch bloc où l'exception a été connecté et affiche.
Il est venu à mon attention que lorsque vous appelez Réponse.Fin() un Système.Le filetage.ThreadAbortException est soulevée. Lorsque cela est soulevé, il semble que la sortie de l'erreur a été d'être ajouté à la fin de mon fichier.
Quand je me suis débarrassé de la journalisation des erreurs de cette exception, il a travaillé beaucoup!
Veuillez vous référer à ce post pour plus d'info http://epplus.codeplex.com/discussions/223843?ProjectName=epplus
grâce joob votre lien soved mon problème c'était d'appeler "GetAsByteArray()". Faire l'énumérées ci-après et dans le lien que tu as donné, je gess maintient l'exception d'être ajouté. par certains majic.
vous obtenez et voter!
http://epplus.codeplex.com/discussions/223843?ProjectName=epplus
Au lieu de la
WriteTo
méthode, essayez ceci:page.aspx.cs code lorsque le bouton cliquez pour Exporter Vers Excel
Je ne pouvais pas obtenir EPPlus pour ouvrir à partir d'IE, il a sauvé fine et ouvert sans erreurs. (chrome a bien fonctionné pour les enregistrer et de les ouvrir). Les suggestions ici n'a pas fonctionné pour moi, peut - être parce que j'ai été en utilisant un fichier aspx, pas un fichier ashx qui a fonctionné pour moi à la fin.
Après des heures de recherche j'ai fini par utiliser un fichier ashx comme par cette stackoverflow post et je l'ai de fonctionner dans tous les navigateurs maintenant sans avertissements/corupt fichier de messages à l'aide de EPPlus.
Des ressources supplémentaires qui peuvent aider les autres:
J'espère que ce sauver quelqu'un d'autre peu de temps.