2012-07-25 211 views
1

從C#使用Microsoft.Office.Interop.Excel對象處理Excel時遇到問題。從C#打開Excel文件#

問題出現在我嘗試打開文件寫入時,我已經在Excel中打開了。這最終會導致錯誤,然後讓Excel在後臺運行。

如何知道該文件在打開之前已經打開?

什麼是處理與Excel對象,從而殺死Excel進程的約定?

回答

0

你好,你必須處理你的excel對象在t reatment(工作簿,applicationClass,usedRange,工作表)

 workbook.Close(false, workbookPath, null); 
     applicationClass.Quit(); 

     while (Marshal.ReleaseComObject(usedRange) > 0) 
     { } 
     while (Marshal.ReleaseComObject(worksheet) > 0) 
     { } 
     while (Marshal.ReleaseComObject(workbook) > 0) 
     { } 
     while (Marshal.ReleaseComObject(applicationClass) > 0) 
     { } 
0

對於已經打開的開放 - 更多的只是在MSDN鍵入Workbooks.Open。 這裏是保存樣品,你只是簡單地覆蓋(一個仍然打開),在不查詢:O), xlSharedxlLocalSessionChanges是關鍵字。

  _xlsWorkbook.SaveAs(
       targetFileName              /* Filename */ 
       ,Excel_ForMissing.XlFileFormat.xlExcel8        /* FileFormat */ 
       ,Missing.Value              /* Password */ 
       ,Missing.Value              /* WriteResPassword */ 
       ,Missing.Value              /* ReadOnlyRecommended */ 
       ,Missing.Value              /* CreateBackup */ 
       ,Excel_ForMissing.XlSaveAsAccessMode.xlShared      /* AccessMode */ 
       ,Excel_ForMissing.XlSaveConflictResolution.xlLocalSessionChanges /* ConflictResolution */ 
       ,false              /* AddToMru */ 
       ,Missing.Value              /* TextCodepage */ 
       ,Missing.Value              /* TextVisualLayout */ 
       ,true              /* Local */ 
      );