Foxtable(狐表)用户栏目专家坐堂 → 数据导出 - 列名称问题


  共有1976人关注过本帖树形打印复制链接

主题:数据导出 - 列名称问题

帅哥哟,离线,有人找我吗?
huizhong
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:141 积分:1227 威望:0 精华:0 注册:2018/2/22 10:06:00
数据导出 - 列名称问题  发帖心情 Post By:2021/9/20 14:26:00 [只看该作者]

老师,窗口中有一个副本表,以下是查询代码
    Dim DA1 As Date = e.Form.Controls("DateTimePicker1").VALUE
    Dim DA2 As Date = e.Form.Controls("DateTimePicker2").VALUE
    Dim b As New CrossTableBuilder("统计表1",DataTables("整车返利录入表"))
    b.Filter ="[开piao日期] >= #" & DA1 & "# And [开piao日期] <= #" & DA2 & "#"
    b.HGroups.AddDef("开piao日期" ,DateGroupEnum.Day.None) '添加客户列用于水平分组
    b.HGroups.AddDef("结算日期",DateGroupEnum.Day.None) '添加客户列用于水平分组
    b.HGroups.AddDef("客户姓名") '添加客户列用于水平分组
    b.HGroups.AddDef("车型") '添加客户列用于水平分组
    b.HGroups.AddDef("VIN码") '添加客户列用于水平分组
    b.HGroups.AddDef("进货类型") '添加客户列用于水平分组
    b.VGroups.AddDef("返利名称") '添加产品列用于垂直分组
    b.Totals.AddDef("返利金额") '添加数量列用于统计
    b.VerticalTotal= True '垂直汇总
    b.HorizontalTotal = True '水平汇总
    b.Decimals = 2
    Tables("查询 返利窗口_Table1").DataSource = b.builddatasource
    Tables("查询 返利窗口_Table1").AutoSizeCols() '自动设置所有列的宽度

因为“返利名称”是不固定的,不同的车型“返利名称“有所不同,不同时期“返利名称“也有所不同,因此,导出的代码中没有指定列名称,代码如下:
If Tables("查询 返利窗口_Table1").rows.count > 0 Then
    Dim dt As Table = Tables("查询 返利窗口_Table1")
    Dim Book As New XLS.Book '定义一个Excel工作簿
    Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
    Dim Style As Xls.Style = Book.NewStyle '新建一个样式
    
    For c As Integer = 0 To dt.Cols.Count -1 '添加列标题
        Sheet(0, c).Value = dt.Cols(c).Name
    Next
    For r As Integer = 0 To dt.Rows.Count - 1 '填入数据
        For c As Integer = 0 To dt.Cols.Count -1
            Sheet(r +1, c).Value = dt.rows(r)(c)
        Next
    Next
    
    Dim St2 As XLS.Style = Book.NewStyle
    St2.Format = "yyyy-MM-dd"
    Sheet.Cols(dt.Cols("开piao日期").Index).Style = st2
    Sheet.Cols(dt.Cols("结算日期").Index).Style = st2
    
    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
Else
    MessageBox.Show("没有要导出的数据,请重试刷新")
    e.Cancel = True
End If

请教:以上的导出代码导出数据的列名称为:返利金额1;返利金额2.....如何能实现,导出的表中体现窗口表的 “实际列标题“,也就是以”返利名称“为列标题

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106012 积分:539147 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/22 9:13:00 [只看该作者]

    For c As Integer = 0 To dt.Cols.Count -1 '添加列标题
        Sheet(0, c).Value = dt.Cols(c).Name
    Next

改为

    For c As Integer = 0 To dt.Cols.Count -1 '添加列标题
if dt.Cols(c).caption > "" then
        Sheet(0, c).Value = dt.Cols(c).caption 
else
        Sheet(0, c).Value = dt.Cols(c).Name
end if
    Next

 回到顶部
帅哥哟,离线,有人找我吗?
huizhong
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:141 积分:1227 威望:0 精华:0 注册:2018/2/22 10:06:00
  发帖心情 Post By:2021/9/22 14:41:00 [只看该作者]

谢谢老师

 回到顶部