自动生成统计报表功能

智遥工作流软件中,自带了一个自动生成统计报表功能(可以再网页上查看,也可以导出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.这个统计报表,还有权限控制功能,可以设置查看人员。

原文地址:https://www.cnblogs.com/zhiyao/p/3108390.html