[问题] 如何读这种格式的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