作者flash5566 (閃光56)
看板Visual_Basic
標題[.NET] 代碼關閉xlsx檔?
時間Sun Nov 17 20:35:02 2019
小弟是vb.net新手,想請教前輩們。
之前公司做一個程式,也是讀取xlsx檔寫入SQL裡,最後讀取完畢後也順利用quit代碼關
閉xlsx檔。
這次也是參照一樣的代碼,做了另一個程式,debug也有讀取完quit代碼,可是最後在工
作管理員確認時,發現xlsx還是沒有被關閉,也試過com解放xlsx檔的代碼,一樣沒有效
。(前一個程式沒有用com解放)
問題有點籠統,不知道有沒有人有類似經驗?感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 126.74.140.197 (日本)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Visual_Basic/M.1573994104.A.080.html
1F:→ hulapig: 有先workbook.close嗎?11/18 01:45
2F:推 johnpage: Excel 關掉11/18 06:53
3F:推 fumizuki: Workbook關閉 Excel.Application退出11/18 23:06
4F:→ fumizuki: 以上變數參考都釋放(指派為 Nothing)11/18 23:06
5F:→ fumizuki: 再不行,就再呼叫 GC.Collect(0)11/18 23:07
6F:推 fumizuki: 透過 Excel 去開啟檔案,讀取內容,容易產生這個問題11/18 23:08
7F:→ fumizuki: 或者改用 ODBC 連接去讀取資料就沒問題了11/18 23:09
8F:→ fumizuki: ODBC 缺點是第一列要是各個欄位名稱,不可缺少11/18 23:10
9F:→ fumizuki: 整欄的資料類型都必須相同,否則會讀不到資料值11/18 23:10
10F:→ fumizuki: 亦可採用第三方套件(例如NPOI...)11/18 23:12
謝謝你們的回覆,GC.Collect也用過了沒反應,最後用找出所有的Excel檔,有被開啟的
都會關閉這方法暫時解決了。
※ 編輯: flash5566 (210.253.198.235 日本), 11/19/2019 11:57:15
11F:→ shiangru: COM 元件要先用 Marshal 釋放之後再使用 Nothing 釋放 04/04 02:46
12F:→ shiangru: 急著馬上回收可以再加 GC 參數GCCollectionMode.Forced 04/04 02:49