proces excel-a se ne ubije.

Ok, stvar je sledeča.

Imam en test.xls file, ki ga odprem v c#, da bi prebral ven podatke.

Odpre mi ga OK, skačem po podatkih OK. Problem je v tem, ker bi po končanem branju zaprl ta excel iz katerega berem.

Koda je:

                ExcelObject.Workbooks oWBs;
                ExcelObject._Workbook oWB;
                ExcelObject.Application excelApp = new ExcelObject.Application();  // Creates a new Excel Application
                // The following line adds a new workbook
               
                oWBs = (ExcelObject.Workbooks)excelApp.Workbooks;
                oWB = (ExcelObject._Workbook)oWBs.Open(fileDialogZaloge.FileName, 0,
                    false, 5, "", "", false, ExcelObject.XlPlatform.xlWindows, "", true,
                    false, 0, true, false, false);

               
                ExcelObject.Sheets excelSheets = oWB.Worksheets;
               
                foreach (ExcelObject._Worksheet sheet in excelSheets)
                {
                    ReleaseExcelObjects(sheet);
                }
                oWB.Close(null, null, null);
                ReleaseExcelObjects(oWB);
                excelApp.Workbooks.Close();
                ReleaseExcelObjects(oWBs);
                excelApp.Quit();
                ReleaseExcelObjects(excelApp);

                oWB = null;
                oWBs = null;
                excelApp = null;
 

Na releaseExcelObjects imam: System.Runtime.InteropServices.Marshal.ReleaseComObject(object); 

 

Prosim, če mi pomagate. Sem kaj spregledal, moram kej posebaj paziti?

 

lp

borut

 

Avtor: bborutt, objavljeno na portalu SloDug.si (Arhiv)

Leave a comment

Please note that we won't show your email to others, or use it for sending unwanted emails. We will only use it to render your Gravatar image and to validate you as a real person.

MihaM
MihaM - sreda, 20. september 2006

Čudna stvar. Poskušaj klicat application.Dispose(), če obstaja. Miha

bborutt
bborutt - sreda, 20. september 2006

Ok, sem ugotovil, na koncu daš:  GC.Collect(); lpborut 

blegos
blegos - torek, 19. september 2006

Ko kreiraš instanco Excela , jo naredi še visible. excelApp.Visible = True;Prav mogoče je da ti je ostal kakšen warning odprt.

AndrejT
AndrejT - torek, 19. september 2006

Pa še to preveri, kako se zadeva obnaša:a] če imaš kakšno instanco Excela odprto že pred izvajanjem te kode, inb] če je nimaš.

MihaM
MihaM - torek, 19. september 2006

Da zoožimo področje, kaj se zgodi, če samo odpreš Application, kličeš Quit in release stvar?