Problem: EXCEL Dateien erstellen

xeEEenon

Mitglied
Problem: EXCEL schließt sich nicht

Huhu,

ich exportiere einen TreeView in eine Excel Datei. Sobald ich auf den Button klicke um diese Aktion durchzuführen startet sich Excel, NUR unter den Prozessen nicht als Anwendung und beendet sich nur wenn ich mein Programm beende. Er soll aber die Datei erstellen und dann Excel beenden.

Das is der Code des Buttons:
-----------------------------------------------------------------------------------------
...
Excel.Application app = new Excel.ApplicationClass();
Excel.Workbook wb;// = new Excel.WorkbookClass();
Excel.Worksheet ws;

wb = app.Workbooks.Add(Type.Missing);
ws = (Excel.Worksheet)wb.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);

/// Code für das schreiben der Zellen
/// ...
/// Code Ende

app.ActiveWorkbook.SaveCopyAs(@"C:\test.xls");
wb.Close(false, Type.Missing, Type.Missing);
app.Quit();

-----------------------------------------------------------------------------------------

Wo liegt das Problem ?

Danke schonmal im voraus :)

Gruß

xeEEenon
 
Zuletzt bearbeitet:
Hallo,

Also so ganz raff ich deine Frage nicht. Einfach einmal ein paar Tipps meinerseits :-) :
Ich würde anstatt Type.Missing
Code:
System.Reflection.Missing.Value
verwenden. Ich erinnere mich dunkel, dass mir dieses Type.Missing einmal Schwierigkeiten gemacht hat.

Willst du nun, dass Excel sichtbar ist oder nicht? Einstellen kannste das über app.Visible.

Damit das Excel vor deiner Applikation schliesst würd ich mal folgendes versuchen:
Versuch mal diese Zeile nach dem app.Quit() anzuhängen
Code:
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

Gruss Alexander
 
Re: Problem: EXCEL schließt sich nicht

wenn ich das mach was du sagst ... und app.Visible = true mach, dann erscheint kurz excel, schließt sich, dennoch steht excel noch in den Prozessen und schließt sich nur wenn ich mein Programm beende :confused:
 
Zuletzt bearbeitet:
Hallo,

Nur damit wir nicht aneinander vorbei reden. Willst du überhaupt, dass Excel (als Applikation) sichtbar wird, oder soll DEINE Applikation einfach das Excefile erstellen?

Also wenn du Excel sichtbar machen willst, dann darfst du keine schliessenden Schritte (Com-Release, app.Quit()) unternehmen.

Ich geb dir mal meinen vollständigen Code (der funktioniert 100pro auf XP).
Code:
			Excel.Application ExcelObj = new Excel.Application();
			try
			{
				//  See if the Excel Application Object was successfully constructed
				if (ExcelObj == null)
				{
					MessageBox.Show(null, "Excel couldn't be started!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
					System.Windows.Forms.Application.Exit();
				}

				//  Make the Application invisible

				ExcelObj.Visible = false;
				ExcelObj.AlertBeforeOverwriting = false;
				object n = System.Reflection.Missing.Value;
				Excel.Workbook theWorkbook = ExcelObj.Workbooks.Open(
					@filename, 
					n,n,n,n,n,true,n,n,true,false,n,n,n,n);
//Ich trage einige Werte in ein bestehendes Worksheet ein. Hier ists wichtig, Worksheet, Workbook mit ReleaseComObject freigeben!
				int ret = Eintragen(theWorkbook, KommenColumn);
				ExcelObj.Quit();
				System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelObj);
				return ret;
			}
			catch(Exception e)
			{
				MessageBox.Show(null, e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
				ExcelObj.Quit();
				System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelObj);
				return 0;
			}

Hast du die Com Objekte wirklich freigegeben?
Wenns immer noch nicht funktioniert paste mal den code.

Gruss Alexander
 
Zurück