[c#] Excelfile automatisch speichern & überspeichern

Nagut... dann werde ich das mal versuchen...

Es geht ja darum dass auf meinem Server logischerweise kein MS Office drauf ist, so wie hier Lokal wo ich das ganze teste... nicht dass es mir dann das ganze Tool über den haufen wirft weil er die Dateien nicht schreiben kann...

In meiner Taskleiste sind ja immer die Excelfiles offen, welche ich als letztes geschrieben habe.

lg Jeannine
 
Zuletzt bearbeitet:
Hey Norbert,

muss ich denn irgendwie noch etwas hinzufügen für Marshal? Mein VS sagt dass das nicht exisiert >.< ( Programmieren macht mich noch wahnsinnig)

Code:
                excel.AlertBeforeOverwriting = false;
                excel.DisplayAlerts = false;
                theWorkbook.SaveAs(@"C:\hostdata\ProgramChanges_" + release + "_" + dt.ToString("yyMMdd") + ".xls",
                Excel.XlFileFormat.xlXMLSpreadsheet, missing, missing,
                false, false, Excel.XlSaveAsAccessMode.xlNoChange,
                missing, missing, missing, missing, missing);  

                // Tabellenblatt entsorgen
                Marshal.ReleaseComObject(sheet);

                // Mappe entsorgen
                Marshal.ReleaseComObject(theWorkbook);

                // Excel schließen
                excel.Quit();

                // Excel-Instanz entsoregn
                Marshal.FinalReleaseComObject(excel);
 
Haha mal ne dumme Frage, aber ich kann nicht mehr denken... 8h programmieren :suspekt:

es sollte ja alle Workbooks schliessen die Offen sind... und da fand ich Open grad so schön passend *g* aber was mach ich denn da wirklich rein :confused: Dafür bin ich für heute auch still ;)

Code:
            finally {

                while(theWorkbook.Open) {

                Marshal.ReleaseComObject(theWorkbook);

                // Excel schließen
                excel.Quit();
            }
            
            }

Danke, Grüsse aum Schnee
 
Ich weiß nicht aber das wäre mir persönlich zu unschön außerdem, würde er sobald du die Excel Datei erstellen willst es sofort schließen, wenn ich das vermute was die Open-Methode macht. Ich würde es wie folgt machen.

Code:
try
{
     //Deine Funktionen die die Excel-Datei erstellt
}
finally
{
     /*Dein Workbook per Close schließen
     Excel schließen per Quit
     Workbook, Sheet, Range etc. per Marshal freigeben und
     zuguterletzt mit Marshal.FinalReleaseComObject die Excel Instanz freigeben*/
}

So wärs für mich die beste Lösung.
 
Das geht nicht. Meine Funktion welche das Excel schreibt ist in der, welche die DB ausliesst... könnte ja mal alles posten dann würdest du aber einen Schock bekommen ;) Will nur wissen wie ich alle Excel die offen sind schliessen kann :eek:
 
Code:
       finally {

                while(theWorkbook.Open) {

                Marshal.ReleaseComObject(theWorkbook);

                // Excel schließen
                excel.Quit();
            }
            
            }

wie du siehst versuche ich das... bisher schleisst es halt nur 1 Excel... aber ich weiss nicht was bei while(theWorkbook._?_?_) reinkommt :-(
 
Achso, sorry hab ich übersehen. Versuchs mal wie folgt, normal müsste es so funktionieren:
Code:
try
{
     //Code für das ganze Excel-Zeug ^^
     theWorkbook.Close(false, Missing.Value, Missing.Value);
     excel.Quit();
}
finally
{
     Marshal.ReleaseComObject(excel);
}
 

Neue Beiträge

Zurück