GNT sans publicité, site mobile, fonctionnalitées exclusives...

Process EXCEL non supprimé du gestionnaire des taches

Le
michael
Bonjour à tous,
Dans une appli web ecrite en csharp, j'écris dans un fichier excel
puis je l'affiche sur le poste client. le problème est qu'il ne me
supprime pas la tache EXCEL.EXE dans le gestionnaire de taches, il
prend donc de plus en plus de mémoire et fait planter le serveur
Je suis sous win2000 et office2003.
voici mon code, merci de votre aide.

private void ExcelDetail(DataSet ds)
{
// création du fichier Excel de détail
string fileName = this.Server.MapPath(".") +
"\Fichier\ModelEfficienceModDetail.xls";

// Objet pour les arguments optionnels ou manquants
object missing = System.Reflection.Missing.Value;

// Ouverture de Excel
Excel.ApplicationClass excelApp = new excel.ApplicationClass();
excelApp.Visible = true;
Excel.Workbooks excelWorkbooks = excelApp.Workbooks;
Excel.Workbook excelWorkbook =
(Excel.Workbook)excelWorkbooks._Open(fileName, missing, missing,
missing, missing, missing, missing, missing, missing, missing, missing,
missing, missing);
Excel.Worksheet excelWorksheet =
(Excel.Worksheet)excelWorkbook.Worksheets.get_Item(1);

. divers calcul pour renseigner les celulles du fichier
excel

//Quitter Excel et nettoyer les Objets
if(excelWorksheet != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject
(excelWorksheet);
excelWorksheet = null;
if(excelWorkbook != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject
(excelWorkbook);
excelWorkbook = null;
if(excelWorkbooks != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject
(excelWorkbooks);
excelWorkbooks = null;
if(excelApp != null)
{
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject (excelApp);
excelApp = null;
}
// Ouverture du fichier EXCEL
Response.Write("<body><script>window.open('\\Fichier/Courant/" + file +
"')</script></body>");
}
Lire la réponse

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
mboizeau
Le #12093521
D'une manière générale il n'est pas recommandé de faire tourner les
applications Office sur un serveur web. En particulier parcequ'Excel
est concu pour une utilisation humaine et risque donc de rester
bloquer dans une utilisation "composant".

Ceci mis a part, un appel du garbage collector liberera le process
Excel, utilisez la syntaxe :
System.GC.Collect(0);
apres le "quit()"

(testé en winform, mais il n'y a pas de raison pour une utilisation
serveur)

OTH !

Marc Boizeau

http://oraclevsmicrosoft.blogspot.com
Publicité
Suivre les réponses
Poster une réponse
Anonyme