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
MihaM - sreda, 20. september 2006
Čudna stvar. Poskušaj klicat application.Dispose(), če obstaja. Miha
bborutt - sreda, 20. september 2006
Ok, sem ugotovil, na koncu daš: GC.Collect(); lpborut
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 - 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 - torek, 19. september 2006
Da zoožimo področje, kaj se zgodi, če samo odpreš Application, kličeš Quit in release stvar?