以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多层表头导出为模板  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=191382)

--  作者:g1j2h3
--  发布时间:2024/4/13 17:24:00
--  多层表头导出为模板
在窗口中形成多表头的统计表 ,想按excel模板格式导出,该如何写代码,数据应该是全年的,图例只是部分的

图片点击可在新窗口打开查看此主题相关图片如下:表4.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:表2.png
图片点击可在新窗口打开查看



[此贴子已经被作者于2024/4/13 17:25:13编辑过]

--  作者:有点蓝
--  发布时间:2024/4/14 20:03:00
--  
如果是动态生成的统计表,参考这里的4楼用法:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=191346&skin=0
--  作者:g1j2h3
--  发布时间:2024/4/14 22:58:00
--  
麻烦老师看下代码错在哪里,一直试,没反应啊,发货数量和未发货数量就是填不上数据
Dim Book As New XLS.Book(ProjectPath & "Attachments\\年接单发货统计表.xls")
Dim fl As String = ProjectPath & "Reports\\年接单发货统计表.xls"
Dim b As New SQLCrossTableBuilder("接单发货数量统计", "销售接单")
b.C
b.HGroups.AddDef("产品名称") \'添加客户列用于水平分组
b.HGroups.AddDef("规格型号") \'添加客户列用于水平分组
\'b.VGroups.AddDef("接单日期", DateGroupEnum.Year, "{0}年") \'添加日期列用于垂直分组,按年分组
b.VGroups.AddDef("接单日期", "{0}月") \'添加日期列用于垂直分组,按月分组
b.Totals.AddDef("销售数量", "销售数量")
b.Totals.AddDef("已发货数量", "发货数量")
\'b.Totals.AddDef("未发货数量", "未发货数量")
\'b.HorizontalTotal = True
Dim dt As DataTable = b.Build(True)
Dim Sheet As XLS.Sheet = Book.Sheets(0)
For Each dc As DataCol In dt.DataCols
    If dc.Caption Like "*月" Then
        Dim i As Integer = Val(dc.Caption)
        Sheet(5, 9 + i).Value = "[" & dc.Name & "]"
    End If 
Next 
book.AddDataTable("接单发货数量统计", dt) \'添加临时表
Book.Build() 
Book.Save(fl)
Dim Proc As New Process
Proc.File = fl
Proc.Start()
[此贴子已经被作者于2024/4/14 22:58:25编辑过]

--  作者:有点蓝
--  发布时间:2024/4/14 23:23:00
--  
……
Dim dt As DataTable = b.Build(True)
Dim Sheet As XLS.Sheet = Book.Sheets(0)
For Each dc As DataCol In dt.DataCols
        Dim i As Integer = (Val(dc.Caption) - 1) * 3 + 3
    If dc.Caption Like "*销售数量" Then
        Sheet(5, i + 1).Value = "[" & dc.Name & "]"
elseIf dc.Caption Like "*发货数量" Then
        Sheet(5, i + 3).Value = "[" & dc.Name & "]"
elseIf dc.Caption Like "*发货数量" Then
        Sheet(5, i + 2).Value = "[" & dc.Name & "]"
    End If 
Next 
book.AddDataTable("接单发货数量统计", dt) \'添加临时表

--  作者:g1j2h3
--  发布时间:2024/4/15 9:36:00
--  
老师辛苦图片点击可在新窗口打开查看
--  作者:g1j2h3
--  发布时间:2024/5/25 8:39:00
--  
大师,按照上面的代码生成的报表,合计位置不对

图片点击可在新窗口打开查看此主题相关图片如下:微信截图.png
图片点击可在新窗口打开查看




--  作者:有点蓝
--  发布时间:2024/5/25 9:29:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=150626
--  作者:g1j2h3
--  发布时间:2024/5/25 9:42:00
--  
按照下边的代码生成的报表,合计部分的数据自动填到了前面的三列,麻烦老师看下代码错在哪里
Dim Book As New XLS.Book(ProjectPath & "Attachments\\年接单发货统计表.xls")
Dim fl As String = ProjectPath & "Reports\\年接单发货统计表.xls"
Dim b As New SQLCrossTableBuilder("接单发货数量统计", "接单登记")
b.C
b.AddTable("接单登记", "接单单号", "接单明细", "接单单号")
b.HGroups.AddDef("产品名称") \'添加客户列用于水平分组
b.HGroups.AddDef("规格型号") \'添加客户列用于水平分组
\'b.VGroups.AddDef("接单日期", DateGroupEnum.Year, "{0}年") \'添加日期列用于垂直分组,按年分组
b.VGroups.AddDef("接单日期", "{0}月") \'添加日期列用于垂直分组,按月分组
b.Totals.AddDef("销售数量", "销售数量")
b.Totals.AddExp("已发货数量", "发货数量")
b.Totals.AddExp("未发货数量", "销售数量 - 发货数量", "未发货数量")
b.HorizontalTotal = True 
Dim dt As DataTable = b.Build(True)
Dim Sheet As XLS.Sheet = Book.Sheets(0)
For Each dc As DataCol In dt.DataCols
\'    If dc.Caption Like "*月" Then
               Dim i As Integer = (Val(dc.Caption) - 1) * 3 + 3
        If dc.Caption Like "*销售数量" Then
            Sheet(5, i + 1).Value = "[" & dc.Name & "]"
        ElseIf dc.Caption Like "*未发货数量" Then
            Sheet(5, i + 3).Value = "[" & dc.Name & "]"
        ElseIf dc.Caption Like "*已发货数量" Then
            Sheet(5, i + 2).Value = "[" & dc.Name & "]"
        End If
\'    End If
Next
book.AddDataTable("接单发货数量统计", dt) \'添加临时表
Book.Build() 
Book.Save(fl)
Dim Proc As New Process
Proc.File = fl
Proc.Start()
生成的报表

图片点击可在新窗口打开查看此主题相关图片如下:微信截图.png
图片点击可在新窗口打开查看
报表模板

图片点击可在新窗口打开查看此主题相关图片如下:模板.png
图片点击可在新窗口打开查看






--  作者:有点蓝
--  发布时间:2024/5/25 10:12:00
--  
到命令窗口使用b.Build()生成这个统计表,然后打开表结构看看这个统计表的列名和标题名是怎么样的
--  作者:g1j2h3
--  发布时间:2024/5/25 10:18:00
--  
下图是生成的临时表,看似没问题

图片点击可在新窗口打开查看此主题相关图片如下:生成的临时表.png
图片点击可在新窗口打开查看