我创建了一个C#应用程序,其输入是一些大型Excel文件。
在我的代码中,我打开它,处理然后关闭它。整个过程大约需要15-20分钟。在此期间,当我尝试在外部打开其他一些Excel文件(1)时,任何输入的Excel文件(2)(当前正在处理的)也随之打开。当我尝试关闭它(2)时,发生异常并且该工具中止其进程。
我认为出现问题是因为Excel文件是在同一个实例下打开的。我怎么能避免这个?
答案 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