Laden...

[GELÖST] [C#] Erstelltes Excel-File während der Laufzeit manuell im Explorer öffnen

Erstellt von Camouflagezebra vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.329 Views
C
Camouflagezebra Themenstarter:in
10 Beiträge seit 2010
vor 13 Jahren
[GELÖST] [C#] Erstelltes Excel-File während der Laufzeit manuell im Explorer öffnen

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

1.820 Beiträge seit 2005
vor 13 Jahren

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 🙁

C
Camouflagezebra Themenstarter:in
10 Beiträge seit 2010
vor 13 Jahren

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();