导出整洁的Excle数据

导出整洁的Excle数据

近期参与了一个系统的升级,里面有一个导出数据的功能,但是涉及到很多表的数据,即使查出来又如何整理成美观的数据表格呢?
先把数据从数据库查询出来,这些数据和往常的不一样。是经过多表联查显示的数据,可想而知,连表查询字段难免会重复显示,所以为了显示的更简洁有效就需要“加工”。请看原始数据:
导出整洁的Excle数据_第1张图片

在以上查询结果中,考生“何绍”一共报考了3个团队,而因为一个团队中有三位导师并且他都选了,所以连表查询就出现了3*3=9条数据。我们总不能让一个考生占用九行吧,所以“压缩”下行数再显示。
创建工作簿、工作表:
在这里插入图片描述
定义样式:
导出整洁的Excle数据_第2张图片
导出整洁的Excle数据_第3张图片
再设置列宽和查询数据:
导出整洁的Excle数据_第4张图片
列宽单位是1/256个字符宽度,所以要乘以实际宽度。刚开始不懂直接设置为30,结果导出来头发丝一样的宽度真宽啊!
然后根据条件判断进行设置单元格的值:
导出整洁的Excle数据_第5张图片

这里是把相同团队的考生给放入同一行。如果下一行的团队ID和当前循环行的团队ID一样,就将这个导师作为当前行的第二导师同时移除掉这个下一行。样式也给上。
当然不止第二导师还有第三导师,第三导师那就是下下行。如图:
导出整洁的Excle数据_第6张图片
为什么第三导师还是第i+1 ,而不是i+2 行呢?因为上一行处理完后被移除了,i+1行就是再下一行了。如果是用i+2也不移除处理后的行那么导出的结果会产生空行。主要原因还是每次for循环的时候都创建了一行,以至于后面就有空行了。
导出到Excle表格后结果如图:
导出整洁的Excle数据_第7张图片

你可能感兴趣的:(MVC,导出Excle)