读取excel,操作sheet,彻底关闭excel.exe,
using Microsoft.Office.Interop.Excel;
///
/// top 2 rows are not allowed,so must remove them
///
///
private void InitExcelFormat(string strFilePath)
{
Microsoft.Office.Interop.Excel.ApplicationClass app = new ApplicationClass();
WorkbookClass wrkbk = null;
Microsoft.Office.Interop.Excel.Sheets shts = null;
Worksheet wrksht = null;
Microsoft.Office.Interop.Excel.Range rng = null;
try
{
wrkbk = (WorkbookClass)app.Workbooks.Open(filePath,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value);
shts = wrkbk.Worksheets;
wrksht = (Worksheet)shts[1];
for (int i = 0; i <= 2; i++)//remove top 2 rows
{
rng = (Microsoft.Office.Interop.Excel.Range)wrksht.Rows[1, Missing.Value];
rng.Select();
rng.EntireRow.Delete(Microsoft.Office.Interop.Excel.XlDeleteShiftDirection.xlShiftUp);
i++;
}
wrkbk.Save();
}
catch (Exception ex)
{
Label1.Text += ShowErrorMsg(ex.Message);
}
finally
{
wrkbk.Close(true, Missing.Value, Missing.Value);
app.Quit(); //this function can not kill Excel.Exe process
//release objects,kill Excel.Exe process
System.Runtime.InteropServices.Marshal.ReleaseComObject(shts);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wrksht);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wrkbk);
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
System.Runtime.InteropServices.Marshal.ReleaseComObject(rng);
shts = null;
wrksht = null;
wrkbk = null;
app = null;
rng = null;
GC.Collect();
}
}