按钮代码如下,红色为修改的。
'筛选指定起止日期且"供货渠道"不为空的数据行
'With Tables("hc")
'.Filter = "[rq] >= #" & Vars("SD") & "# And [rq] <= #" & Vars("ED") & "# and [ghqd] Is Not Null"
'End With
'定义一个分组统计表生成器(分组汇总)
Dim g As New GroupTableBuilder("gyshjdhz", DataTables("hc"))
g.Caption = "供应商阶段汇总"
g.Groups.AddDef("gysh") '按供应商分组
g.Groups.AddDef("rq", DateGroupEnum.Day, "", "日") '供应商相同的情况下,再按日分组
g.Totals.AddDef("rkje")
g.Totals.AddDef("shje")
g.Totals.AddDef("zhfje")
g.Decimals = 2 '保留2位小数
'筛选指定起止日期且"供货渠道"不为空的数据行
g.Filter = "[rq] >= #" & Vars("SD") & "# And [rq] <= #" & Vars("ED") & "# And [ghqd] Is Not Null"
g.Build() '生成统计表
'生成以后,对日期进行加工处理
Tables("gyshjdhz").DataTable.DataCols.Add("rq2", Gettype(String), 255, "", "附加列")
For Each r As Row In Tables("gyshjdhz").Rows
Dim d As Date = new Date(Vars("SD").Year, Vars("SD").Month, r("rq"))
Dim str As String = ""
Do While d <= vars("ED")
If DataTables("hc").Find("rq = #" & d & "# and gysh = '" & r("gysh") & "'") IsNot Nothing Then
str &= d & ","
End If
d = d.AddMonths(1)
Loop
r("rq2") = str.TrimEnd(",")
Next
MainTable = Tables("gyshjdhz") '打开生成的统计表
'MainTable.Select(0,0,MainTable.Rows.Count-1,MainTable.Cols.Count-1) '选定整张表(或在Excel模板文件中细节区的第一行<ENd>列加上<ALL>)
'根据现有的模板文件生成一个工作薄
Dim tmp As String = ProjectPath & "Attachments\供应商阶段汇总模板.xls"
Dim rpt As String = ProjectPath & "reports\供应商阶段汇总输出.xls"
Dim Book As New XLS.Book(tmp)
Book.Build() '生成细节区
Book.Save(rpt) '另存为Excel报表文件
'执行外部程序(打开工作簿)
Dim Proc As New Process
Proc.File = rpt
Proc.Start()