[.NET] 代碼關閉xlsx檔?

看板Visual_Basic作者 (閃光56)時間5年前 (2019/11/17 20:35), 5年前編輯推噓3(309)
留言12則, 4人參與, 5年前最新討論串1/1
小弟是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

11/18 01:45, 5年前 , 1F
有先workbook.close嗎?
11/18 01:45, 1F

11/18 06:53, 5年前 , 2F
Excel 關掉
11/18 06:53, 2F

11/18 23:06, 5年前 , 3F
Workbook關閉 Excel.Application退出
11/18 23:06, 3F

11/18 23:06, 5年前 , 4F
以上變數參考都釋放(指派為 Nothing)
11/18 23:06, 4F

11/18 23:07, 5年前 , 5F
再不行,就再呼叫 GC.Collect(0)
11/18 23:07, 5F

11/18 23:08, 5年前 , 6F
透過 Excel 去開啟檔案,讀取內容,容易產生這個問題
11/18 23:08, 6F

11/18 23:09, 5年前 , 7F
或者改用 ODBC 連接去讀取資料就沒問題了
11/18 23:09, 7F

11/18 23:10, 5年前 , 8F
ODBC 缺點是第一列要是各個欄位名稱,不可缺少
11/18 23:10, 8F

11/18 23:10, 5年前 , 9F
整欄的資料類型都必須相同,否則會讀不到資料值
11/18 23:10, 9F

11/18 23:12, 5年前 , 10F
亦可採用第三方套件(例如NPOI...)
11/18 23:12, 10F
謝謝你們的回覆,GC.Collect也用過了沒反應,最後用找出所有的Excel檔,有被開啟的 都會關閉這方法暫時解決了。 ※ 編輯: flash5566 (210.253.198.235 日本), 11/19/2019 11:57:15

04/04 02:46, 5年前 , 11F
COM 元件要先用 Marshal 釋放之後再使用 Nothing 釋放
04/04 02:46, 11F

04/04 02:49, 5年前 , 12F
急著馬上回收可以再加 GC 參數GCCollectionMode.Forced
04/04 02:49, 12F
文章代碼(AID): #1TqJvu20 (Visual_Basic)
文章代碼(AID): #1TqJvu20 (Visual_Basic)