2021-07-08用jqGrid 插件动态展示Table 列 (行转列) + echarts生成图表,并导出为excel的过程

本文介绍了使用C#和jqGrid插件动态展示Table列转行的方法,结合ECharts生成折线图,同时详细讲解了数据处理和导出Excel的流程,包括EF框架、存储过程的运用。在前端,通过按钮触发展示和导出功能,但在实际效果中出现了一行空白,仍需优化。
摘要由CSDN通过智能技术生成

@2021-07-08用jqGrid 插件动态展示Table 列 echarts生成图表,并导出为excel的过程

欢迎来到一只老菜鸟

你好! 这是你第一次写文章,项目所用技术都是老技术,此前没有写文章的习惯,这也是从业几年来首次编写,望大家多多指教,互相观摩学习

本次项目为c#语言编写,本人也只干了几年的c#,技术方面请各位大佬指导。

问题描述:需要将日期、总数、合格数、良率 列转行 ,生成一个月度统计表,上面是数据,下面是数据形成的日趋势图 合并导出到excel 要求效果如下

在这里插入图片描述
这是整理后的原始数据
在这里插入图片描述
心路历程就此别过
直接上 sql 代码

--生成补全日期行
select dateadd(DAY,number,'2020-6-1 00:00') as dt from master.dbo.spt_values  where type ='P'and number <=DATEDIFF(DAY, '2020-6-1 00:00', '2020-7-1 00:00')

--变成具体的日期
select @tdd='<'+STUFF((select dateadd(DAY,number,@strDate) as dt from master.dbo.spt_values  where type ='P'and number <=DATEDIFF(DAY, @strDate, @enddate)  for xml path('')),1,1,'')

select @tdd = REPLACE(@tdd,'<dt>','[')

select @tdd = REPLACE(@tdd,'</dt>','],')

--去除 T00:00:00
select @tdd = REPLACE(@tdd,'T00:00:00','')

--关键  这里将日期动态化,日期转列 (, * 就是日期, '' as 日期 只是为了拼凑需要导出的格式) ,有多列需转,直接  UNION (应该有更好的办法,希望大家多多留言)
select '' as 日期, '' 合计, * from (
select ntime,

 sum(GoodBoard) 合格数 
  from tt_statall_info where   ntime between  '2021-6-1' and '2021-7-1'
group by  ntime )  V
PIVOT (sum(合格数) for V.ntime in ([2021-06-01],[2021-06-02],[2021-06-03],[2021-06-04],[2021-06-05],[2021-06-06],[2021-06-07],[2021-06-08],[2021-06-09],[2021-06-10],[2021-06-11],[2021-06-12],[2021-06-13],[2021-06-14],[2021-06-15],[2021-06-16],[2021-06-17],[2021-06-18],[2021-06-19],[2021-06-20],[2021-06-21],[2021-06-22],[2021-06-23],[2021-06-24],[2021-06-25],[2021-06-26],[2021-06-27],[2021-06-28],[2021-06-29],[2021-06-30],[2021-07-01] )) as   T    

--总的实现
create  procedure pro_X

@strDate varchar(200),@enddate varchar(200)
as 
begin
declare @strsql varchar(500);
declare @tdd  varchar(8000);
declare @tee  varchar(8000);
set @strsql=N'  ntime between  '''+@strDate +''' and ''' +@enddate+'''';
select @tdd='<'+STUFF((select dateadd(DAY,number,@strDate) as dt from master.dbo.spt_values  where type ='P'and number <=DATEDIFF(DAY, @strDate, @enddate)  for xml path('')),1,1,'')
select @tdd = REPLACE(@tdd,'<dt>','[')
select @tdd = REPLACE(@tdd,'</dt>','],')
select @tdd = REPLACE(@tdd,'T00:00:00','')
select @tdd = Left(@tdd,LEN(@tdd)-1)
print @tdd
select @tee =' select '''' as 日期, '''' 合计, * from (
select ntime,sum(GoodBoard) 合格数 from tablX  where '+@strsql+'
group by  ntime )  V
PIVOT (sum(合格数) for V.ntime in ('+@tdd+' )) as   T ';
--有多列需要转的话直接UNION

exec ( @tee)
end
--执行,这里代码只转了行
exec pro_ETDaily '2021-6-1','2021-7-1'


效果图
在这里插入图片描述

##数据抽取已完成,干前端

关键代码贴出在这里插入代码片

/前端html
 <div class="ibox-content">
                        <div class="jqGrid_wrapper" id ="jqGrid_wrapper">
                            <table id="table_list_1">
                            </table>
                            <div id="pager_list_1">
                            </div>
                        </
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值