作者KSmart (經濟不景氣,好景不常在)
看板C_Sharp
標題[問題] DataTable 及 EXCEL的問題
時間Wed Jan 1 23:08:04 2014
有個類似車籍資料的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
→ m339606:有一個問題,為什麼不把資料丟進去SQL中來做新增修改刪除? 01/01 23:26
→ m339606:在需要用Excel的時候再匯出出來給使用者 01/01 23:26
→ m339606:讀寫Excel的效率低下加上使用者一多還會造成鎖定卡死 01/01 23:27
→ m339606:之前讀Excel的資料越多讀取時間成指數增長 01/01 23:33
→ KSmart:謝謝樓大,但就是沒有DB = = 01/01 23:37
→ m339606:考量到資料量的增長上,用檔案式資料庫也是種處理方式 01/01 23:39
推 johnpage:excel =db 01/02 05:35
→ johnpage:用sql存取excel,網路有很多範例 01/02 05:36
→ KSmart:感謝m大分享,後來也有想過用SQLite,目前還不知道哪種 01/02 22:39
→ KSmart:速度會比較快,不過這有衍伸出另一個小問題 01/02 22:40
→ KSmart:假如程式放在Share資料夾,不同的兩台電腦開啟這支程式 01/02 22:41
→ KSmart:那麼SQL的DB會不會lock? 01/02 22:41
→ KSmart:john大,用SQL方式存取EXCEL會比較快嗎?(還沒試過這個) 01/02 22:43
推 johnpage:ㄧ般sql是不會鎖定的,不過你可以下達鎖定的指令 01/02 22:45
→ johnpage:Sal存取excel不會比較快,但是資料變大比較容易轉mssql 01/02 22:48
→ johnpage:或mysql. 01/02 22:48
→ johnpage:像你用類別包裝,以後維護會很累,所以不建議 01/02 22:49
→ Litfal:db會不會鎖定要看種類,例如單機常用的SQLCE就會鎖。 01/03 18:24
→ Litfal:我也建議用DB的概念去重新設計一下,否則開個雲端excel還比 01/03 18:33
→ Litfal:較簡單... 01/03 18:33
推 f1234518456:要這樣搞不會用資料庫喔... 01/05 23:13