在执行C#应用程序期间在外部打开Excel文件时出现问题

时间:2009-08-14 06:06:09

标签: c# excel

我创建了一个C#应用程序,其输入是一些大型Excel文件。

在我的代码中,我打开它,处理然后关闭它。整个过程大约需要15-20分钟。在此期间,当我尝试在外部打开其他一些Excel文件(1)时,任何输入的Excel文件(2)(当前正在处理的)也随之打开。当我尝试关闭它(2)时,发生异常并且该工具中止其进程。

我认为出现问题是因为Excel文件是在同一个实例下打开的。我怎么能避免这个?

2 个答案:

答案 0 :(得分:0)

以下是代码:

Excel.ApplicationClass objExcelApp = new Excel.ApplicationClass();
Excel.Workbook objWorkbook = objExcelApp.Workbooks.Open("File Name",0, true, 1, "", "", true, Excel.XlPlatform.xlWindows,Type.Missing, false, false, 0,true);
Excel.Worksheet objWorksheet = (Excel.Worksheet) objWorkbook.Worksheets.get_Item(1);
Excel.Range objRangeData =objWorksheet.UsedRange;
// Some proces
GC.Collect();
objRangeData.Clear ();
objWorkbook.Close(false, strDictFile, false);
objExcelApp.Workbooks.Close();
objExcelApp.Quit();             
System.Runtime.InteropServices.Marshal.ReleaseComObject(objRangeData); 
System.Runtime.InteropServices.Marshal.ReleaseComObject(objWorksheet);          
System.Runtime.InteropServices.Marshal.ReleaseComObject(objWorkbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcelApp); 
objWorksheet = null; 
objWorkbook = null; 
objExcelApp = null; 
GC.Collect(); 
GC.WaitForPendingFinalizers();

答案 1 :(得分:0)

SpreadsheetGear for .NET将只打开您希望它打开的工作簿,并且在大多数情况下运行速度比使用.NET中的Excel COM Interop API快得多。

如果您想亲自试用,可以查看示例here并下载免费试用here

免责声明:我拥有SpreadsheetGear LLC