作者azzc1031 (azzc1031)
看板C_Sharp
标题[问题] 如何读这种格式的Excel进去SQL server
时间Fri Jul 31 16:00:44 2020
小弟数据分析师一枚
工作上常需要把散落各地的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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1596182446.A.85D.html
1F:→ james732: 不太懂你遇到的困难点是什麽?看起来不至於无法处理07/31 16:05
2F:→ awwseed: 看起来先用空白行当切割条件切出每个主料号07/31 16:14
3F:→ awwseed: 切完出来的资料就有规律可以去拆解成两块了吧07/31 16:15
4F:→ awwseed: 发现该 ROW A栏 = 主料号,就取B栏值为主料号07/31 16:17
5F:→ awwseed: 再往下找 A栏 = 子料号描述 的 ROW + 1一直爬到结束07/31 16:18
6F:→ awwseed: 逐行读 ROW 去处理应该也没啥问题,主料号之间都有空白行07/31 16:21
7F:→ testPtt: 资料库正规化研究一下 不过我会直接用xml栏位07/31 16:23
8F:→ azzc1031: /*我是原po*/ ,目前我是写双回圈,外回圈读a,b栏,内回07/31 17:28
9F:→ azzc1031: 圈读b,c栏。if外回圈遇到A栏的string非”主料号”时,则07/31 17:28
10F:→ azzc1031: continue。进来内回圈後,内回圈初始值为”子料号”+1 r07/31 17:28
11F:→ azzc1031: ow,只要遇到b栏为null值则break。但我这样写会变成这三07/31 17:28
12F:→ azzc1031: 颗主料号都会带到皮卡丘、杰尼龟、小火龙、妙蛙种子。是07/31 17:28
13F:→ azzc1031: 不是不用写那麽复杂的双回圈?07/31 17:28
14F:推 Nilife: 双层while loop,07/31 17:30
15F:→ Nilife: 第一层切出每笔料号,第二层处理各笔料号内容07/31 17:30
16F:→ 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
18F:→ awwseed: 大概这样吧,不过 Skip 跟 Split 目前写死,视情况改罗 07/31 18:50
19F:→ azzc1031: 呜呜楼上太用心了,请受小弟一拜QQ 感谢! 07/31 19:08
21F:→ awwseed: 我有安装 LinqToExcel 套件就是 07/31 19:19