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