从C#打开Excel文件#

问题描述:

从C#使用Microsoft.Office.Interop.Excel对象处理Excel时遇到问题。从C#打开Excel文件#

问题出现在我尝试打开文件写入时,我已经在Excel中打开了。这最终会导致错误,然后让Excel在后台运行。

如何知道该文件在打开之前已经打开?

什么是处理与Excel对象,从而杀死Excel进程的约定?

下面的文章提供检查的好方法,如果一个文件已经打开:

Is there a way to check if a file is in use?

这篇文章查杀Excel进程谈判:

Kill Process Excel C#

希望这些都是有帮助

你好,你必须处理你的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) 
     { } 

对于已经打开的开放 - 更多的只是在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 */ 
      );