以文本方式查看主题 - 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=172052) |
-- 作者:huizhong -- 发布时间: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 ="[开票日期] >= #" & DA1 & "# And [开票日期] <= #" & DA2 & "#" b.HGroups.AddDef("开票日期" ,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("开票日期").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.....如何能实现,导出的表中体现窗口表的 “实际列标题“,也就是以”返利名称“为列标题 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2021/9/22 14:41:00 -- 谢谢老师 |