我知道这已被讨论过很多,但我找不到可以解决我特定问题的解决方案。
我已编写代码,使用.csv
将数据从.xlsb
文件复制到Microsoft.Office.Interop.Excel
文件。我的问题是,当我使用安装了Excel 2007的计算机时,Excel进程仍保持打开状态。
我已经使用Excel 2003和2010测试了相同的代码,一切正常。
针对类似问题的大多数解决方案都会讨论留下的引用,因此我删除了大部分代码,直到我留下这个:
class Program
{
static void Main(string[] args)
{
Excel.Application oApp = null;
Excel.Workbooks oWBs = null;
Excel.Workbook oWB = null;
try
{
//Start Excel and get Application object.
oApp = new Excel.Application();
// Open existing workbook
oWBs = oApp.Workbooks;
oWB = oWBs.Open(xlsbFile);
// Save the workbook
oWB.Save();
}
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage, theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage, theException.Source);
MessageBox.Show(errorMessage, "Error");
}
finally
{
oWB.Close(false);
while (Marshal.FinalReleaseComObject(oWB) > 0) { };
GC.Collect();
GC.WaitForPendingFinalizers();
oWB = null;
oWBs.Close();
while (Marshal.FinalReleaseComObject(oWBs) > 0) { };
GC.Collect();
GC.WaitForPendingFinalizers();
oWBs = null;
oApp.Quit();
while (Marshal.FinalReleaseComObject(oApp) > 0) { };
GC.Collect();
GC.WaitForPendingFinalizers();
oApp = null;
}
}
}
非常感谢任何有关此问题的帮助。