DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: ASP.NET | Thema: Excel-File erstellt, Prozess bleibt im Taskmanager erhalten? | Von: Thomas Grupp ( 08.06.2005 08:44)

Hallo,

ich muss eine Excel-Datei am Server erzeugen, dies mache ich mit den bekannten Werkzeugen:

Dim xlApp As Excel.Application
Dim xlMappe As Excel.Workbook
Dim xlBlatt As Excel.Worksheet
Dim xlZelle As Excel.Range
xlApp = New Excel.Application
xlApp.Visible = False
xlMappe = xlApp.Workbooks.Add 'Add(ExcelVorlagen)
xlApp.DisplayAlerts = False
xlBlatt = xlMappe.Worksheets(1)
xlZelle = xlBlatt.Range("A1")

'Daten schreiben mit Schleife
xlZelle.Offset(H - 1, I - 1).Value = Text

'Dann wird alles geschlossen
xlMappe.SaveAs(Dateiname)
xlMappe.Close()
xlApp.Quit()
xlZelle = Nothing
xlBlatt = Nothing
xlMappe = Nothing
xlApp = Nothing

Problem ist, dass nun am Server immer noch der Excel-Prozess erhalten geblieben ist, bei jeder Excel-Datei, die erstellt wird, kommt ein neuer Prozess hinzu....



Betreff Von Datum
Re: Excel-File erstellt, Prozess bleibt im Taskmanager...
Hallo Thomas,<br><br>haben die Excel.Objekte ein Dispose, was man<br>anwenden kann ? Oder hast du mal den<br>Garbage-Collector angestartet ?<br><br>Gruß<br><br>Guido
Guido Nachtigall 08.06.2005 09:42
Re: Excel-File erstellt, Prozess bleibt im...
Hi Guido,<br><br>hilf mir mit dem Garbage-Collector mal auf die Sprünge, den kenne ich nur vom Namen her - kannst Du ein Beispiel-Code posten?
Thomas Grupp 08.06.2005 09:50
Re: Excel-File erstellt, Prozess bleibt im...
Der Garbage-Collector sorgt dafür, dass nicht mehr verwendete Objekte gelöscht werden. Allerdings macht er das zu unregelmäßigen Zeiten oder wenn unbedingt Speicher benötigt wird und keiner mehr...
Guido Nachtigall 08.06.2005 09:57
Re: Excel-File erstellt, Prozess bleibt im...
ok, habe die 2 Zeilen unterhalb meines Codes eingefügt - bewirkt nichts - habe dann einen thread.sleep(1000) eingefügt und nochmals die 2 Zeilen - bringt immer noch nichts - jetzt stehen 2 Prozesse...
Thomas Grupp 08.06.2005 10:09
Re: Excel-File erstellt, Prozess bleibt im...
Folgende Lösung sollte es tun: <br>(Das Beispiel ist für C#, es sollte aber auch für VB in dieser Art funktionieren) <br><br>1. Alle Events auf den COM-Objects abhängen. <br>2. Com-Objects Releasen in der...
Guido Nachtigall 08.06.2005 10:03
Re: Excel-File erstellt, Prozess bleibt im...
das habe ich mal alles so eingegeben - geht aber immer noch nicht,<br><br>ich habe nur<br>oExcel.WorkbookBeforeSave -= EventDel_BeforeBookSave; <br>oExcel.WorkbookDeactivate -= EventDel_Deactivate; <br>nicht...
Thomas Grupp 08.06.2005 10:32
Re: Excel-File erstellt, Prozess bleibt im...
löscht du auch die Objekte in der Reihenfolge wie du sie generierst ?
Guido Nachtigall 08.06.2005 10:42
Re: Excel-File erstellt, Prozess bleibt...
nein in umgekehrter Reihenfolge!
Thomas Grupp 08.06.2005 10:48
Re: Excel-File erstellt, Prozess...
ok - ist auch richtig so. <br><br>hast du die Funktion:<br><br>private void NAR(object o)<br>{<br>try<br>{<br>System.Runtime.InteropServices.Marshal.ReleaseComObject(o);<br>}<br>catch {}<br>finally<br>{<br>o = null;<br>}<br>}...
Guido Nachtigall 08.06.2005 10:53
Re: Excel-File erstellt, Prozess...
Public Shared Sub NAR(ByVal o As Object)<br><br> Try<br> System.Runtime.InteropServices.Marshal.ReleaseComObject(o)<br> Catch ex As Exception<br> Finally<br> o =...
Thomas Grupp 08.06.2005 10:59
Re: Excel-File erstellt,...
Also es hat definitiv was mit der Reihenfolge zu tun ?<br><br>Kannst du den aktuellen Code mal posten ?<br><br>Gruß<br><br>Guido
Guido Nachtigall 08.06.2005 11:05
Re: Excel-File erstellt,...
Public Shared Sub XLSErstellenExcel(ByVal myTable As DataTable, ByVal Dateiname As String)<br><br> Dim xlApp As Excel.Application<br> Dim xlMappe As Excel.Workbook<br> Dim xlBlatt As...
Thomas Grupp 08.06.2005 11:08
Re: Excel-File erstellt,...
Ich bin mir nicht sicher, ob das SHARED nicht störend ist.<br><br>Zur Not würde ich mit System.Diagnostics.Process.KILL den Prozess löschen.
Guido Nachtigall 08.06.2005 11:15
Re: Excel-File...
Wenn nicht shared, was dann - ich muss ja von außerhalb drauf zugreifen können?<br><br>Und wie kenne ich den aktuellen Prozess - es können ja mehrere Excel-Dateien parallel erzeugt werden - ich darf ja...
Thomas Grupp 08.06.2005 11:34
Re: Excel-File...
Man kann auch jedes mal eine Instanz dieses Klasse bilden - wenn nicht<br>shared. Es könnte sein, daß der gemeinsame Zugriff das Killen des Prozesses<br>unterbindet. Kannst du mal probieren, ob es nicht...
Guido Nachtigall 08.06.2005 11:43
Re: Excel-File...
ich glaube ich stehe gerade auf dem Schlauch?
Thomas Grupp 08.06.2005 11:52
Re:...
Versuch es mal mit: xlApp.Application.Quit statt xlApp.Quit
Guido Nachtigall 08.06.2005 11:56
Re:...
ich geb´s jetzt bald auf - geht leider auch nicht
Thomas Grupp 08.06.2005 12:01
Re:...
Also: <br>1) Prüfen, ob bereits ein Prozess Excel erstellt wurde.<br>2) Wenn ja, keine weitere Excel-Application erstellen<br><br>dann mal schauen, ob es trotzdem klappt.
Guido Nachtigall 08.06.2005 12:00
Re:...
So weit bin ich nun, aber wie weise ich dem Objekt einen vorhanden Process zu - ich habe mich schon zutode gegoogelt....<br><br> Dim ProcVorhanden As Boolean = False<br> Dim PC As...
Thomas Grupp 08.06.2005 14:20
Re: Excel-File erstellt,...
Du solltest die Objekte trotzdem mal auf Nothing setzen
Guido Nachtigall 08.06.2005 11:19
Re: Excel-File erstellt,...
ohne natürlich nicht das<br><br>xlMappe.Save<br>xlMappe.Close<br>xlApp.Quit<br><br>vergessen
Guido Nachtigall 08.06.2005 11:23
Re: Excel-File erstellt, Prozess bleibt im Taskmanager...
Also die ExcelApplication-Variable habe ich nun klassenweit deklariert:<br><br>Public Class Dateien<br> Private Shared xlApp As Excel.Application<br>....<br><br>Wenn dann die Sub aufgerufen wird, die die...
Thomas Grupp 15.06.2005 07:01
Re: Excel-File erstellt, Prozess bleibt im...
Hallo, ich habe genau die gleichen Probleme. Egal was ich mache Excel bleibt hängen. <br>Funktioniert die Lösung mit dem PC.Kill()?<br>Was müßte ich für Verweise setzen dass ich System.Diagnostics.Process...
G. Guest 16.06.2005 13:27

Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Building und Connecting Know-how

© Copyright 2003 ppedv AG