[問題] 產生EXCEL後,工作管理員卻還有程序

看板C_Sharp (C#)作者 (小天)時間12年前 (2012/10/17 16:47), 編輯推噓3(306)
留言9則, 6人參與, 最新討論串1/1
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)

10/17 16:55, , 1F
10/17 16:55, 1F

10/17 17:19, , 2F
感謝 不過暫時還沒考慮上面這種方式
10/17 17:19, 2F

10/17 22:25, , 3F
改用html格式產出excel檔吧~
10/17 22:25, 3F

10/18 00:28, , 4F
原本一開始我也堅持用呼叫的 到最後還是改用了NPOI...
10/18 00:28, 4F

10/18 12:40, , 5F
其實用office的元件的缺點是office版本更新就可能不適用
10/18 12:40, 5F

10/18 12:41, , 6F
另外除了NPOI以外 還有更好的選擇EPPlus
10/18 12:41, 6F

10/18 12:41, , 7F
只是限制要office 2007+ 2003以下的就不能用了
10/18 12:41, 7F

10/23 16:50, , 8F
新的格式可以用 openxml
10/23 16:50, 8F

10/30 12:02, , 9F
最後我還是捨棄了...改用NPOI 原本的方式太難處理
10/30 12:02, 9F
文章代碼(AID): #1GVd2PIW (C_Sharp)
文章代碼(AID): #1GVd2PIW (C_Sharp)