台灣最大程式設計社群網站
線上人數
474
 
會員總數:245465
討論主題:189222
歡迎您免費加入會員
討論區列表 >> VB.NET >> VB.NET讀/寫EXCEL
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
VB.NET讀/寫EXCEL
價值 : 100 QP  點閱數:1465 回應數:6

樓主

小田
門外漢
0 19
529 23
發送站內信

我目前利用OLEDB的方式來讀取以及寫入EXCEL
EXCEL欄位
A:排序
B:價錢
C:數量
D:總價:B*C得到的值
寫入的程式碼
Update [Sheet1$] Set 價錢=30,數量=5 where 排序 =1
寫入後開啟EXCEL "價錢"與"數量"的欄位有帶入程式設定的值
但總價的欄位無法自動計算出
請問是有漏掉什麼步驟嗎?還是無法這樣使用

搜尋相關Tags的文章: [ OLEDB ] , [ EXCEL ] ,
本篇文章發表於2017-11-23 14:30
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

羅伯斯
檢舉此回應
Update [Sheet1$] Set 價錢=30,數量=5 價錢*數量 AS 總價 where 排序=1

或是在Execl的總價存儲格鍵入公式 = 價錢 * 數量
如:在總價存儲格在 D2,價錢存儲格在 B2,數量存儲格在 C2
在 D2 存儲格輸入 =B2*C2
本篇文章回覆於2017-11-23 17:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

小田
檢舉此回應
謝謝羅伯斯
總價欄位在EXCEL裡已有輸入公式
所以我有找到在程式裡面加入這段程式可以讓EXCEL做運算
Dim oExcel As New Excel.Application
Dim oBook As Excel.Workbook
oBook = oExcel.Workbooks.Open("EXCEL路徑")
oExcel.CalculateFull()
oBook.ForceFullCalculation = True
oBook.RefreshAll()
oBook.Close(True)
但現在又遇到新的問題,
我在使用Update的語法時,有時候會出現錯誤(有時候顯示值有問題、有時候出現找不到欄位、有時候變開啟唯讀、有時候正常)
上訴遇到的情況都是在輸入同意筆資料時 有時候會錯誤有時候正常
(PS上面那段只要執行一次下次不輸入EXCEL也可以做計算,因為有無法釋放的問題所以我就沒放在程式裡面了)
有沒有什麼方法可以讓他更穩定,我程式在UPDATE後不關閉直接開啟EXCEL也會造成程式當掉是因為程式佔用住EXCEL嗎?
本篇文章回覆於2017-11-24 08:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

Daimom
捐贈 VP 給 Daimom 檢舉此回應
要讀寫excel要不要改用epplus
但只限定xlsx

程式開啟後沒有釋放,開啟是一定都會當掉的。
除非你是走資料庫(但資料庫也不建議沒釋放就離開)。
本篇文章回覆於2017-11-24 11:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

小田
檢舉此回應
謝謝 Daimom
我程式裡面有加這些去試圖釋放(後台看不到有EXCEL開啟中,但不關閉程式開啟還是會當掉)
Friend Conn As OleDb.OleDbConnection
Friend cmd As New OleDb.OleDbCommand
.
.
.
Conn.Close()
cmd.Dispose()
Conn.Dispose()
另外因為EXCEL是.XLSM所以無法使用epplus
因為EXCEL還有EXCEL的程式 所以只有XLSM檔
本篇文章回覆於2017-11-24 11:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
xlsm 剛查可以用epplus開

個人不會把excel當成資料庫來連線,這只是建議。
本篇文章回覆於2017-11-24 16:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

小田
檢舉此回應
謝謝 Daimom
我不是把EXCEL當資料庫
只是因為我用VB.NET的Microsoft.Office.Interop
但會有卡在後台的情況
所以我程式用GC.Collect來釋放後台的EXCEL.exe
但釋放忽快忽慢,因為我要執行不只一個動作
有三個動作分別寫在不同按鈕
但因為卡在後台會當掉
所以我改用OLEDB的寫法來讀寫EXCEL
我來試試epplus
本篇文章回覆於2017-11-24 17:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.