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