以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]导出指定列后汇总消失  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=154709)

--  作者:luoyafeng
--  发布时间:2020/9/24 13:58:00
--  [求助]导出指定列后汇总消失
《分割报表》按钮使用以下代码进行了分组汇总
********************************************************************
Dim t As Table = Tables("餐费数据明细")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
Tables("餐费数据明细").Sort = "所属年份,所属月份,部门,项目编号"
\'定义项目分组
g = New Subtotalgroup 
g.GroupOn = "项目编号"
g.TotalOn = "金额"
t.SubtotalGroups.Add(g)
\'定义部门分组
g = New Subtotalgroup 
g.GroupOn = "部门"
g.TotalOn = "金额"

t.SubtotalGroups.Add(g)


\'定义总计分组
g = New Subtotalgroup
g.GroupOn = "*" 
g.TotalOn = "金额"

t.SubtotalGroups.Add(g)
t.Subtotal() \'生成汇总模式
图片点击可在新窗口打开查看

***********************************************************************
《导出报表》按钮使用下面的代码就可以把生成的汇总带格式的导出来
***********************************************************************
Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then
    Book.Save(dlg.FileName)
    Dim Proc As New Process
    Proc.File = dlg.FileName
    Proc.Start()
End If
***********************************************************************
但是只想导出里面部分列,不想全部导出,就在《导出报表》按钮里面尝试了以下方法
***********************************************************************
Dim dt As Table = Tables("餐费数据明细")
Dim nms() As String = {"所属年份","所属月份","姓名","部门","项目编号","金额"} \'要导出的列名 
Dim caps() As String = {"所属年份","所属月份","姓名","部门","项目编号","金额"}  \'对应的列标题 
Dim szs() As Integer = {80,80,80,110,110,80} \'对应的列宽 
Dim Book As New XLS.Book \'定义一个Excel工作簿 
Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表 
Dim st As XLS.Style = Book.NewStyle \'日期列的显示格式 
st.Format = "yyyy-MM-dd" 
For c As Integer = 0 To nms.length -1 
    Sheet(0, c).Value = caps(c) \'指定列标题
    Sheet.Cols(c).Width = szs(c) \'指定列宽
    If dt.Cols(nms(c)).IsDate Then \'如果是日期列
        Sheet.Cols(c).Style = st \'设置显示格式
    End If
Next
For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据
    For c As Integer = 0 To nms.length -1
        Sheet(r +1, c).Value = dt.rows(r)(nms(c))
    Next
Next
***********************************************************************
图片点击可在新窗口打开查看导出后分组汇总的格式消失了图片点击可在新窗口打开查看
***********************************************************************
提问:如何在保持分组汇总的前提下,导出指定列(导出列名:所属月份,所属年份,部门,项目编号,姓名,金额)

--  作者:有点蓝
--  发布时间:2020/9/24 15:08:00
--  
《导出报表》按钮使用下面的代码就可以把生成的汇总带格式的导出来  --- 把这个代码完整贴出来
--  作者:luoyafeng
--  发布时间:2020/9/24 15:26:00
--  
代码是完整的。在导出前已经通过排序、筛选、汇总完成了,就是第一大段代码
--  作者:有点蓝
--  发布时间:2020/9/24 15:41:00
--  
请上传实例说明