使用 Microsoft.Office.Interop.Excel 对象从 C# 处理 Excel 时遇到问题。
当我尝试打开一个文件以写入我已经在 Excel 中打开的文件时,问题就出现了。这最终会出错,然后在后台运行一个 Excel 实例。
在打开文件之前如何判断文件已经打开?
此外,处理 Excel 对象并因此终止 Excel 进程的约定是什么?
使用 Microsoft.Office.Interop.Excel 对象从 C# 处理 Excel 时遇到问题。
当我尝试打开一个文件以写入我已经在 Excel 中打开的文件时,问题就出现了。这最终会出错,然后在后台运行一个 Excel 实例。
在打开文件之前如何判断文件已经打开?
此外,处理 Excel 对象并因此终止 Excel 进程的约定是什么?
您好,您必须在处理结束时处理您的 excel 对象(工作簿、应用程序类、使用范围、工作表)
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), 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 */
);