看板 C_Sharp 關於我們 聯絡資訊
小弟數據分析師一枚 工作上常需要把散落各地的Excel讀進SQL server 不過這次的格式實在太魔幻了,實在很頭痛 如下: https://i.imgur.com/Rk3ly4V.jpg
每顆主料號底下都有數量不一的子料號 一個Excel檔的主料號有上千個 我要讀的Excel檔約有十來個 我的目標要存成這樣: https://i.imgur.com/WHtZKu8.jpg
目前我是寫雙for迴圈 外迴圈讀a,b欄,內迴圈讀b,c欄。 若外迴圈遇到A欄的string非”主料號”時,則continue。 進來內迴圈後 內迴圈初始值為Find.(“子料號”).row +1 只要遇到b欄為null值則break。 但我這樣寫會變成這三顆主料號都會帶到 皮卡丘、傑尼龜、小火龍、妙蛙種子 這四顆子料號 因為系統默認 Find.(“子料號”).row 是第四列 所以內迴圈實際上只在row5~row8跑 是不是不用寫那麼複雜的雙for迴圈? 有高手可以救救我嗎QQ 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.215.145.175 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1596182446.A.85D.html
james732: 不太懂你遇到的困難點是什麼?看起來不至於無法處理07/31 16:05
awwseed: 看起來先用空白行當切割條件切出每個主料號07/31 16:14
awwseed: 切完出來的資料就有規律可以去拆解成兩塊了吧07/31 16:15
awwseed: 發現該 ROW A欄 = 主料號,就取B欄值為主料號07/31 16:17
awwseed: 再往下找 A欄 = 子料號描述 的 ROW + 1一直爬到結束07/31 16:18
awwseed: 逐行讀 ROW 去處理應該也沒啥問題,主料號之間都有空白行07/31 16:21
testPtt: 資料庫正規化研究一下 不過我會直接用xml欄位07/31 16:23
azzc1031: /*我是原po*/ ,目前我是寫雙迴圈,外迴圈讀a,b欄,內迴07/31 17:28
azzc1031: 圈讀b,c欄。if外迴圈遇到A欄的string非”主料號”時,則07/31 17:28
azzc1031: continue。進來內迴圈後,內迴圈初始值為”子料號”+1 r07/31 17:28
azzc1031: ow,只要遇到b欄為null值則break。但我這樣寫會變成這三07/31 17:28
azzc1031: 顆主料號都會帶到皮卡丘、傑尼龜、小火龍、妙蛙種子。是07/31 17:28
azzc1031: 不是不用寫那麼複雜的雙迴圈?07/31 17:28
Nilife: 雙層while loop,07/31 17:30
Nilife: 第一層切出每筆料號,第二層處理各筆料號內容07/31 17:30
Nilife: 這樣設計以後你每筆內容增加也比較好改07/31 17:30
※ 編輯: azzc1031 (49.215.145.175 臺灣), 07/31/2020 17:58:18 ※ 編輯: azzc1031 (49.215.145.175 臺灣), 07/31/2020 18:11:25 ※ 編輯: azzc1031 (49.215.145.175 臺灣), 07/31/2020 18:12:43 ※ 編輯: azzc1031 (49.215.145.175 臺灣), 07/31/2020 18:20:19
awwseed: https://i.imgur.com/AUoLDid.png 07/31 18:49
awwseed: 大概這樣吧,不過 Skip 跟 Split 目前寫死,視情況改囉 07/31 18:50
azzc1031: 嗚嗚樓上太用心了,請受小弟一拜QQ 感謝! 07/31 19:08
awwseed: https://dotnetfiddle.net/6AlnIb 07/31 19:18
awwseed: 我有安裝 LinqToExcel 套件就是 07/31 19:19