使用Microsoft.Office.Interop.Excel对象从C#使用Excel时遇到问题。
问题出现在我尝试打开要写入的文件时,我已经在Excel中打开了。这最终会出现错误,然后在后台运行Excel实例。
如何在打开文件之前判断文件是否已打开?
使用Excel对象处理并因此终止Excel进程的惯例是什么?
答案 0 :(得分:2)
答案 1 :(得分:0)
您好,您必须在处理结束时处置您的excel对象(工作簿,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)
{ }
答案 2 :(得分:0)
用于打开已经打开的 - 更简单的类型Workbooks.Open在MSDN上。 这是保存示例,您只需覆盖(仍然打开)而不查询:o), xlShared 和 xlLocalSessionChanges 是关键字。
_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 */
);