作者firingmoon (小天)
看板C_Sharp
標題[問題] 產生EXCEL後,工作管理員卻還有程序
時間Wed Oct 17 16:47:18 2012
GOOGLE上有很多解決方法,不過目前只有一個方法OK,但是還是有問題
我主要是想把database的檔案撈出來,存到EXCEL
code大概是
Excel.Application xApp = new Excel.ApplicationClass();
Excel.Workbook xBook = xApp.Workbooks.Open(ReportPath[0],
Missing.Value, Missing.Value, Missing.Value,Missing.Value, Missing.Value, Missi
ng.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,Missing.Va
lue, Missing.Value, Missing.Value, Missing.Value);
Excel.Worksheet xSheet01 = (Excel.Worksheet)xBook.Sheets["A1"];
Excel.Worksheet xSheet02 = (Excel.Worksheet)xBook.Sheets["A2"];
Excel.Worksheet xSheet03 = (Excel.Worksheet)xBook.Sheets["A3"];
xSheet01.get_Range("A7", "A111").ToString()).Value2 = data;
//關閉EXCEL
xBook.Close(false, Missing.Value, Missing.Value);
xApp.Workbooks.Close();
xApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheet01);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheet02);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheet03);
xApp = null;
xBook = null;
xSheet01 = null;
xSheet02 = null;
xSheet03 = null;
GC.Collect();
GC.WaitForPendingFinalizers();
基本上大家都用這種方法,但是我還是關不掉Orz
後來找到一個殘暴的方法
foreach (System.Diagnostics.Process proc in
System.Diagnostics.Process.GetProcesses())
{
if (proc.ProcessName == "EXCEL")
{
proc.Kill();
}
}
但是這種方法會讓產生出來的EXCEL檔案開啟時,出現
其檔案格式與副檔名所指定的格式不同,開啟檔案前,請確認檔案未損毀,且來自信任的
來源」的錯誤,所以沒辦法用這種方法去關閉EXCEL
想請教各位是我第一段關閉的code有甚麼問題,還是有其他方法能夠解決,謝謝。
--
這裡不是讓你被治癒的
只是讓你病更重的..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.170.127.19
※ 編輯: firingmoon 來自: 1.170.127.19 (10/17 16:47)
→ firingmoon:感謝 不過暫時還沒考慮上面這種方式 10/17 17:19
→ Abbee:改用html格式產出excel檔吧~ 10/17 22:25
推 Elearnet:原本一開始我也堅持用呼叫的 到最後還是改用了NPOI... 10/18 00:28
→ bbcust:其實用office的元件的缺點是office版本更新就可能不適用 10/18 12:40
→ bbcust:另外除了NPOI以外 還有更好的選擇EPPlus 10/18 12:41
→ bbcust:只是限制要office 2007+ 2003以下的就不能用了 10/18 12:41
推 gundan:新的格式可以用 openxml 10/23 16:50
→ firingmoon:最後我還是捨棄了...改用NPOI 原本的方式太難處理 10/30 12:02