2016-07-14 29 views
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)

+0

我想你需要通過調用Marshal.ReleaseComObject(excelApp)等來正確關閉和清理Excel對象。閱讀此:http://stackoverflow.com/questions/158706/how-to-properly-clean-up- excel-interop-objects – Mangist

+1

什麼是'path'?你檢查'fullFilePath'是否存在,如果不存在,那麼你創建'path \ fileName'而不是'fullFilePath';也許這是你的問題。爲了補充和澄清Mangist的說法,你可以創建一個'Excel.Workbooks'對象,當你訪問'excelApp.Workbooks'時可能不知道它。因此,在發佈的代碼中,您有3個需要發佈的對象,應用程序「excelApp」,工作簿「workBook」以及當前未分配的Workbooks對象。 – Quantic

回答

0

那麼,這是愚蠢的。當應用程序啓動時,我不小心添加了一個換行符到文件名,我沒有注意到,因爲文件名顯示在單行文本框中......哦,男孩。

相關問題