Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[GELÖST] [C#] Erstelltes Excel-File während der Laufzeit manuell im Explorer öffnen
Camouflagezebra
myCSharp.de - Member



Dabei seit:
Beiträge: 10
Herkunft: Österreich

Themenstarter:

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

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Camouflagezebra am .
private Nachricht | Beiträge des Benutzers
tom-essen
myCSharp.de - Experte

Avatar #avatar-2140.png


Dabei seit:
Beiträge: 1.815
Herkunft: NRW

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Camouflagezebra
myCSharp.de - Member



Dabei seit:
Beiträge: 10
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

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();
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Camouflagezebra am .
private Nachricht | Beiträge des Benutzers