1、添加对应Excel版本的DLL引用,(如Microsoft.Office.Interop.Excel.dll 11.0对用2003)
2、添加using Microsoft.Office.Interop.Excel;
3、 Application app = new Application();
object oMissing = System.Reflection.Missing.Value;
string appPath = AppDomain.CurrentDomain.BaseDirectory;
Workbook book = null;
Worksheet sheet = null;
try
{
book = app.Workbooks._Open(appPath + @"xxx.xls", oMissing, oMissing, oMissing, oMissing, oMissing,
oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
sheet = (Worksheet)book.Sheets[1];
sheet.Cells[3, 3] ="xxx";
book.SaveAs(path, oMissing, oMissing, oMissing, oMissing, oMissing, XlSaveAsAccessMode.xlShared,
oMissing, oMissing, oMissing, oMissing, oMissing);
book.Close(XlSaveAction.xlDoNotSaveChanges, null, null);
app.Visible = false;
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet); //该方法是对com组件调用Release()方法,具体的意思就是对该组件的引用计数减一,如果等于零,就可以从内存中delete
System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
flag = true;
}
catch { }
finally
{
sheet = null;
book = null;
app = null;
GC.Collect(); //强制垃圾回收
}
其中GC.Collect用来强制垃圾回收结束Excel进程,但是这样用一般不能正常结束的,需要在调用该方法外调用该方法后使用GC.Collect()方法