Hallo Community,
Ich habe folgendes Problem:
Mein Programm erstellt während seiner Laufzeit ein Excel-File. Funktioniert wunderbar.
Jedoch kann ich das Excel-File nicht selber öffnen, während noch das Programm läuft.
// Variablen deklarieren
Excel.Application myExcelApplication;
Excel.Workbook myExcelWorkbook;
Excel.Worksheet myExcelWorkSheet;
myExcelApplication = null;
try
{
// Excel Prozess initialisieren
myExcelApplication = new Excel.Application();
myExcelApplication.Visible = false;
myExcelApplication.ScreenUpdating = false;
// Excel Datei anlegen: Workbook
var myCount = myExcelApplication.Workbooks.Count;
myExcelWorkbook = (Excel.Workbook)(myExcelApplication.Workbooks.Add(System.Reflection.Missing.Value));
myExcelWorkSheet = (Excel.Worksheet)myExcelWorkbook.ActiveSheet;
//Nun wird das Excel-File mit Daten befüllt
//...
myExcelWorkbook.Close(true, report_path + "report.xlsx", System.Reflection.Missing.Value);
}
catch (Exception ex)
{
String myErrorString = ex.Message;
MessageBox.Show(myErrorString);
}
finally
{
// Excel beenden
if (myExcelApplication != null)
{
myExcelApplication.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcelApplication);
}
}
Das Excel-File lässt sich erst öffnen, wenn mein Programm geschlossen wurde.
Wenn ich es öffne, während mein Programm noch läuft, wird zwar Excel gestartet, jedoch wird das Excel-File nicht geöffnet.
Habe ich vergessen irgend eine Verbindung zwischen dem Programm und dem Excel-File zu trennen? Falls ja, welche?^^
greetz
Zebra
Hallo!
Benutze am besten für alle Excel-Objekt-Instanzen using
-Blöcke, damit die Instanzen nach Abschluss der Erstellung korrekt entfernt werden.
In deinem Fall ist wahrscheinlich im Hintergrund noch Excel geöffnet (Taskmanager?), welches noch ein Handle auf der erstellten Datei hat.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Ja, der Excel-Prozess schließt sich nicht.
Wie muss ich das Excel-Object in den using-Block setzen?
Ich kenn mich mit C# leider nicht so aus 😦
Ich bekomme folgende Fehlermeldung:
"Microsoft.Office.Interop.Excel.Application": Der in einer using-Anweisung verwendete Typ muss implizit in System.IDisposable konvertiert werden können.
EDIT:
Ich habe das Problem gelöst, in dem ich nach dem erstellen der Excel-Datein das Programm neu starte (ist eine Sache von einer Sekunde, da das Programm nicht groß ist)
Application.Restart();