[問題] DataTable 及 EXCEL的問題

看板C_Sharp作者 (經濟不景氣,好景不常在)時間10年前 (2014/01/01 23:08), 編輯推噓3(3018)
留言21則, 5人參與, 最新討論串1/1
有個類似車籍資料的excel檔,大致格式如下 品牌 | 1500cc | 1600cc| 1800cc | 2000cc| ------------------------------------------- Benz | | | | | ------------------------------------------- Totota| VIOS | | Altis | Camry | X軸的細項只是暫時列出幾項,實際可能有40~50筆。 Y軸的資料筆數目前不到10筆,但之後數量可能會到達30~50筆,甚至100筆也有可能。 我用了一個class 負責處理這些資料(using EPPLUS), 大致上需要的功能就是新增、刪除、修改 class CarData{ DataTable dsCarRawData = new DataTable("Car"); private void AddRawData(); private void EdisRawData(); private void DeleteRawData(); } 問題一:假設我有其他的Class(假設為MainForm)需要用到這個DataTable, 除了New 這個class來取得這些資料外,還有其他辦法嗎? 問題二:會讓使用者去"增加"這些資料,所以我有幾個做法: 1.將使用者新增的資料塞入DataTable,再把整個DataTable存成Excel(1次全塞) 2.將使用者新增的資料塞入DataTable,再把這筆紀錄塞到Excel。(1次塞1筆) 請問以上哪種方式比較好?或是有其他方式? 問題三:會讓使用者去"修改"這些資料,有以下做法 1.使用DataTable Find或Select去找到該筆資料並修改,在全部回存Excel 請問是否還有其他方式? 問題四:會讓使用者去"刪除"這些資料,有以下做法 1.使用DataTable Find去找該筆資料並刪除,並全部回存Excel 請問是否還有其他方式? 原本想說可以在Excel根據修改或刪除的部門做一筆一筆處理。 但是這樣不曉得會不會造成程式執行速度變慢? 還是各位前輩有其他建議呢?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.173.185.36

01/01 23:26, , 1F
有一個問題,為什麼不把資料丟進去SQL中來做新增修改刪除?
01/01 23:26, 1F

01/01 23:26, , 2F
在需要用Excel的時候再匯出出來給使用者
01/01 23:26, 2F

01/01 23:27, , 3F
讀寫Excel的效率低下加上使用者一多還會造成鎖定卡死
01/01 23:27, 3F

01/01 23:33, , 4F
之前讀Excel的資料越多讀取時間成指數增長
01/01 23:33, 4F

01/01 23:37, , 5F
謝謝樓大,但就是沒有DB = =
01/01 23:37, 5F

01/01 23:39, , 6F
考量到資料量的增長上,用檔案式資料庫也是種處理方式
01/01 23:39, 6F

01/02 05:35, , 7F
excel =db
01/02 05:35, 7F

01/02 05:36, , 8F
用sql存取excel,網路有很多範例
01/02 05:36, 8F

01/02 22:39, , 9F
感謝m大分享,後來也有想過用SQLite,目前還不知道哪種
01/02 22:39, 9F

01/02 22:40, , 10F
速度會比較快,不過這有衍伸出另一個小問題
01/02 22:40, 10F

01/02 22:41, , 11F
假如程式放在Share資料夾,不同的兩台電腦開啟這支程式
01/02 22:41, 11F

01/02 22:41, , 12F
那麼SQL的DB會不會lock?
01/02 22:41, 12F

01/02 22:43, , 13F
john大,用SQL方式存取EXCEL會比較快嗎?(還沒試過這個)
01/02 22:43, 13F

01/02 22:45, , 14F
ㄧ般sql是不會鎖定的,不過你可以下達鎖定的指令
01/02 22:45, 14F

01/02 22:48, , 15F
Sal存取excel不會比較快,但是資料變大比較容易轉mssql
01/02 22:48, 15F

01/02 22:48, , 16F
或mysql.
01/02 22:48, 16F

01/02 22:49, , 17F
像你用類別包裝,以後維護會很累,所以不建議
01/02 22:49, 17F

01/03 18:24, , 18F
db會不會鎖定要看種類,例如單機常用的SQLCE就會鎖。
01/03 18:24, 18F

01/03 18:33, , 19F
我也建議用DB的概念去重新設計一下,否則開個雲端excel還比
01/03 18:33, 19F

01/03 18:33, , 20F
較簡單...
01/03 18:33, 20F

01/05 23:13, , 21F
要這樣搞不會用資料庫喔...
01/05 23:13, 21F
文章代碼(AID): #1In2zNgY (C_Sharp)