C#生成Excel文件後完全解除佔用代碼(來着CSDN)

http://bbs.csdn.net/topics/280078428app

jy251函數

LS說KILL進程的朋友們···我說。。。大家真行!!!若是用戶是administrator還行,若是不是怎麼辦??你是沒有權限KILL滴!!!

ui

C# code
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
object  objmissing = System.Reflection.Missing.Value;
 
Excel.ApplicationClass application =  new  ApplicationClass();
Excel.Workbook book = application.Workbooks.Add(objmissing);
Excel.Worksheet sheet = (Excel.Worksheet)book.Worksheets.Add(objmissing,objmissing,objmissing,objmissing);
 
//操做過程 ^&%&×&……&%&&……
 
//釋放
sheet.SaveAs(path,objmissing,objmissing,objmissing,objmissing,objmissing,objmissing,objmissing,objmissing);
System.Runtime.InteropServices.Marshal.ReleaseComObject(( object )sheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(( object )book);
application.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(( object )application);
System.GC.Collect();



有一點,在網上你是找不到滴···純屬經驗:
若是你要寫的Excel是多個Sheet的話,那麼你最好寫個函數:
好比 private bool overdue_report_sub(Excel.Worksheet sheet)
將sheet的對象傳進去,在這個函數中進行操做,函數過程只寫Sheet的操做過程,釋放仍是放在外面。若是你不這樣作的話,那麼,恭喜你,你仍是釋放不掉。可是若是隻有一個Sheet操做的話,你就能夠不用寫這個函數了,只是在整個函數體中進行建立和釋放。spa

相關文章
相關標籤/搜索