0
我有一個ClickOnce應用程序,需要確定是否存在或不存在excel文件,以決定是創建還是寫入。爲什麼如果我重新啓動應用程序,File.Exists()不再工作?
Excel.Workbook workBook;
if (File.Exists(fullFilePath)) {
workBook = excelApp.Workbooks.Open(fullFilePath);
} else {
workBook = excelApp.Workbooks.Add(ApplicationDeployment.CurrentDeployment.DataDirectory + @"\" + TEMPLATE_NAME);
workBook.SaveAs(path + "\\" + fileName, Excel.XlFileFormat.xlWorkbookNormal);
}
也能正常工作的第一次應用程序進行安裝和使用,但如果我重新啓動應用程序不再看到文件,如果它存在,導致被執行的另存爲,並引起異常。例外是System.Runtime.InteropServices.COMException (0x800A03EC)
。
我想你需要通過調用Marshal.ReleaseComObject(excelApp)等來正確關閉和清理Excel對象。閱讀此:http://stackoverflow.com/questions/158706/how-to-properly-clean-up- excel-interop-objects – Mangist
什麼是'path'?你檢查'fullFilePath'是否存在,如果不存在,那麼你創建'path \ fileName'而不是'fullFilePath';也許這是你的問題。爲了補充和澄清Mangist的說法,你可以創建一個'Excel.Workbooks'對象,當你訪問'excelApp.Workbooks'時可能不知道它。因此,在發佈的代碼中,您有3個需要發佈的對象,應用程序「excelApp」,工作簿「workBook」以及當前未分配的Workbooks對象。 – Quantic