zoukankan      html  css  js  c++  java
  • 自动生成统计报表功能

    智遥工作流软件中,自带了一个自动生成统计报表功能(可以再网页上查看,也可以导出Excel);不用自己写代码,甚至都不需要调整一下,非常实用。作为一个懒人程序员,我很喜欢这个功能。

    我们开发好一个流程后,比如“差旅报销单”有时候需要查询一下,一段时间内有多少人报销了,报销内容是什么。这样就需要一个查询统计功能了。之前用过的OA都没有这个功能,都要需要自己开发,而且要做成一个流程的模式。挺麻烦的,至少我这个懒人是这样觉得的。

    先上个截图吧:

    自动生成的报表默认只提供按日期范围查询,但是代码是开源的,其他的条件需要自己添加。源代码非常简单

    using System;
    using System.Data;
    using System.Text;
    using System.Web.UI;
    using Ext.Net;
    using ZOA_DAL;
    using ZOA;
    
    public partial class WorkFlow_Form_CLBXD_R : BasePage
    {
        Z_User u = new Z_User();
        SqlHelper sh = new SqlHelper();
        protected void Page_Init(object sender, EventArgs e)
        {
    
        }
    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
    
            }
        }
    
        protected void BQuery_Click(object sender, DirectEventArgs e)
        {
            StoreMain.DataSource = QueryMain();
            StoreMain.DataBind();
        }
    
        protected DataTable QueryMain()
        {
            StringBuilder sqlStr = new StringBuilder();
            sqlStr.Append(" select F.*,W.subject,W.finishflag,start_time,end_time  ");
            sqlStr.Append(" from CLFBX F ");
            sqlStr.Append(" inner join Z_WorkFlowSummary W ON F.workid=W.workid and W.status=1 ");
            if (TDateFrom.IsEmpty == false)
            {
                sqlStr.Append("   and datediff(D,W.start_time,'" + TDateFrom.SelectedDate + "')<=0 ");
            }
            if (TDateTo.IsEmpty == false)
            {
                sqlStr.Append("   and datediff(D,W.start_time,'" + TDateTo.SelectedDate + "')>=0 ");
            }
            //sqlStr.Append(" Where 1=1 ");
            //sqlStr.Append(" ");
            //sqlStr.Append(" ");
            return sh.Query(sqlStr.ToString());
        }
    
        //导出数据
        protected void BExportData_Click(object sender, EventArgs e)
        {
            ExportExcel ee = new ExportExcel();
            DataTable dt = QueryMain();
            dt.Columns["subject"].ColumnName = "流程名称";
            dt.Columns["start_time"].ColumnName = "发起时间";
            dt.Columns["end_time"].ColumnName = "结束时间";
            dt.Columns["finishflag"].ColumnName = "是否完成";
            dt.Columns["workid"].ColumnName = "编号";
            dt.Columns["userid"].ColumnName = "工号";
            dt.Columns["username"].ColumnName = "姓名";
            dt.Columns["dept"].ColumnName = "部门";
            dt.Columns["position"].ColumnName = "职位";
            dt.Columns["reason"].ColumnName = "出差事由";
            dt.Columns["datefrom"].ColumnName = "开始日期";
            dt.Columns["dateto"].ColumnName = "结束日期";
            dt.Columns["days"].ColumnName = "天数";
            dt.Columns["totalmoney"].ColumnName = "合计金额";
            dt.Columns["remark"].ColumnName = "备注";
            dt.Columns["creator"].ColumnName = "创建人";
            dt.Columns["ctime"].ColumnName = "创建日期";
            dt.Columns["modifier"].ColumnName = "修改人";
            dt.Columns["mtime"].ColumnName = "修改日期";
    
            ee.ToExcel(dt, Response, "Report");
        }
    
    }

    注:

    1.报表只会显示主表的内容,如果有明细表,明细表内容是不会显示的,但是可以自己加上去,改下SQL语句就好了
    2.导出Excel功能和好用,之前我写的导出Excel都是直接将GridView用Excel显示,觉得不好用。
    3.这个统计报表,还有权限控制功能,可以设置查看人员。

  • 相关阅读:
    Bzoj 3624: [Apio2008]免费道路 (贪心+生成树)
    [ZJOI2008]杀蚂蚁antbuster 题解
    赛前集训的第一个小总结(希望?)
    Bzoj1972: [Sdoi2010]猪国杀 题解(大模拟+耐心+细心)
    Luogu2150 寿司晚宴
    「考试总结2020-08-03」可期
    Luogu4747 [CERC2017]Intrinsic Interval
    BZOJ2839 集合计数
    Luogu5369 [PKUSC2018]最大前缀和
    Luogu5772 [JSOI2016]位运算
  • 原文地址:https://www.cnblogs.com/zhiyao/p/3108390.html
Copyright © 2011-2022 走看看