[問題] 如何讀這種格式的Excel進去SQL server

作者: azzc1031 (azzc1031)   2020-07-31 16:00:44
小弟數據分析師一枚
工作上常需要把散落各地的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 感謝!!
作者: james732 (好人超)   2020-07-31 16:05:00
不太懂你遇到的困難點是什麼?看起來不至於無法處理
作者: awwseed (MOTO RIDER)   2020-07-31 16:14:00
看起來先用空白行當切割條件切出每個主料號切完出來的資料就有規律可以去拆解成兩塊了吧發現該 ROW A欄 = 主料號,就取B欄值為主料號再往下找 A欄 = 子料號描述 的 ROW + 1一直爬到結束逐行讀 ROW 去處理應該也沒啥問題,主料號之間都有空白行
作者: testPtt (測試)   2020-07-31 16:23:00
資料庫正規化研究一下 不過我會直接用xml欄位
作者: azzc1031 (azzc1031)   2020-07-31 17:28:00
/*我是原po*/ ,目前我是寫雙迴圈,外迴圈讀a,b欄,內迴圈讀b,c欄。if外迴圈遇到A欄的string非”主料號”時,則continue。進來內迴圈後,內迴圈初始值為”子料號”+1 row,只要遇到b欄為null值則break。但我這樣寫會變成這三顆主料號都會帶到皮卡丘、傑尼龜、小火龍、妙蛙種子。是不是不用寫那麼複雜的雙迴圈?
作者: Nilife (Al-Qaeda)   2020-07-31 17:30:00
雙層while loop,第一層切出每筆料號,第二層處理各筆料號內容這樣設計以後你每筆內容增加也比較好改
作者: awwseed (MOTO RIDER)   2020-07-31 18:49:00
https://i.imgur.com/AUoLDid.png大概這樣吧,不過 Skip 跟 Split 目前寫死,視情況改囉
作者: azzc1031 (azzc1031)   2020-07-31 19:08:00
嗚嗚樓上太用心了,請受小弟一拜QQ 感謝!
作者: awwseed (MOTO RIDER)   2020-07-31 19:18:00
https://dotnetfiddle.net/6AlnIb我有安裝 LinqToExcel 套件就是

Links booklink

Contact Us: admin [ a t ] ucptt.com