Foxtable(狐表)用户栏目专家坐堂 → [求助]报表多层表头


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

主题:[求助]报表多层表头

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


加好友 发短信
等级:婴狐 帖子:29 积分:285 威望:0 精华:0 注册:2016/7/31 11:11:00
[求助]报表多层表头  发帖心情 Post By:2016/8/1 17:57:00 [只看该作者]

在报表编程的自动生成表头中。可不可以自己筛选某一些列显示,而不要全部可见列显示出来?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/1 18:53:00 [只看该作者]

  你代码怎么写的?贴出代码,或者做实例发上来。

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


加好友 发短信
等级:婴狐 帖子:29 积分:285 威望:0 精华:0 注册:2016/7/31 11:11:00
[求助]  发帖心情 Post By:2016/8/1 22:44:00 [只看该作者]

Dim dt As Table = Tables("T222") Dim hdr As Integer = dt.HeaderRows Dim cnt As Integer Dim Book As New XLS.Book() Dim Sheet As XLS.Sheet = Book.Sheets(0) Dim Style As XLS.Style = Book.NewStyle() Dim St1 As xls.style = book.newstyle dt.CreateSheetHeader(Sheet,1,0) Style.BorderTop = XLS.LineStyleEnum.Thin Style.BorderBottom = XLS.LineStyleEnum.Thin Style.BorderLeft = XLS.LineStyleEnum.Thin Style.BorderRight = XLS.LineStyleEnum.Thin Style.BorderColorTop = Color.black Style.BorderColorBottom = Color.black Style.BorderColorLeft = Color.black Style.BorderColorRight = Color.black Sheet(0,9).Value = "打印日期:" & Format(Date.Today, "yyyy年MM月dd日") St1.FontBold = True Sheet(0,2).Style = St1 For r As Integer = 1 To 6 For c As Integer =1 To 21 Sheet(r,c).Style = Style Next Next For c As Integer = 0 To dt.Cols.Count - 1 If dt.Cols(c).Visible Then For r As Integer = 0 To dt.Rows.Count - 1 sheet(r + hdr+1,cnt).value = dt(r,c) Next cnt = cnt + 1 End If Next Book.Build() Dim dlg As New 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
图片点击可在新窗口打开查看此主题相关图片如下:f@k}4sqauu88)v`6fu}rk9.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:婴狐 帖子:29 积分:285 威望:0 精华:0 注册:2016/7/31 11:11:00
[求助]  发帖心情 Post By:2016/8/2 8:40:00 [只看该作者]

Dim dt As Table = Tables("T222") Dim hdr As Integer = dt.HeaderRows Dim cnt As Integer Dim Book As New XLS.Book() Dim Sheet As XLS.Sheet = Book.Sheets(0) Dim Style As XLS.Style = Book.NewStyle() Dim St1 As xls.style = book.newstyle dt.CreateSheetHeader(Sheet,1,0) Style.BorderTop = XLS.LineStyleEnum.Thin Style.BorderBottom = XLS.LineStyleEnum.Thin Style.BorderLeft = XLS.LineStyleEnum.Thin Style.BorderRight = XLS.LineStyleEnum.Thin Style.BorderColorTop = Color.black Style.BorderColorBottom = Color.black Style.BorderColorLeft = Color.black Style.BorderColorRight = Color.black Sheet(0,9).Value = "打印日期:" & Format(Date.Today, "yyyy年MM月dd日") St1.FontBold = True Sheet(0,2).Style = St1 For r As Integer = 1 To 6 For c As Integer =1 To 21 Sheet(r,c).Style = Style Next Next For c As Integer = 0 To dt.Cols.Count - 1 If dt.Cols(c).Visible Then For r As Integer = 0 To dt.Rows.Count - 1 sheet(r + hdr+1,cnt).value = dt(r,c) Next cnt = cnt + 1 End If Next Book.Build() Dim dlg As New 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

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/8/2 11:28:00 [只看该作者]

可以看看这里的示例二:

http://www.foxtable.com/webhelp/scr/1148.htm

 


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


加好友 发短信
等级:婴狐 帖子:29 积分:285 威望:0 精华:0 注册:2016/7/31 11:11:00
  发帖心情 Post By:2016/8/2 11:55:00 [只看该作者]

这个里面没有多层表头的设置勒。如果在多层表头里面呢?我昨天设置过,好像它是把全部表头都显示出来了

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/8/2 12:30:00 [只看该作者]

你可以先常规生成,生成后再删除多余的列:

http://www.foxtable.com/webhelp/scr/1157.htm

例如生成后,删除对于的第5列和第3列:

Dim tbl As Table = Tables("订单")
Dim hdr As Integer = tbl.HeaderRows '获得表头的层数
Dim cnt As Integer
Dim Book As New XLS.Book
Dim Sheet As XLS.Sheet = Book.Sheets(0)
tbl.CreateSheetHeader(Sheet) '生成表头
For c As Integer = 0 To tbl.Cols.Count - 1
    If tbl.Cols(c).Visible Then
        For r As Integer = 0 To tbl.Rows.Count - 1
            sheet(r + hdr,cnt).value = tbl(r,c)
        Next
        cnt = cnt + 1
    End If
Next
Sheet.Cols.RemoveAt(4)
Sheet.Cols.RemoveAt(2)
Book.Save("c:\reports\test.xls")
Dim Proc As New Process
Proc.File = "c:\reports\test.xls"
Proc.Start()

注意先删除靠后的列

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


加好友 发短信
等级:婴狐 帖子:29 积分:285 威望:0 精华:0 注册:2016/7/31 11:11:00
  发帖心情 Post By:2016/8/2 15:27:00 [只看该作者]

您好 我试过之后,它的第一层表头就是最上面那一个,不会跟着删除列,导致数据对应错乱了

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/8/2 15:33:00 [只看该作者]

贴出代码

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


加好友 发短信
等级:婴狐 帖子:29 积分:285 威望:0 精华:0 注册:2016/7/31 11:11:00
[求助]  发帖心情 Post By:2016/8/2 16:26:00 [只看该作者]

Dim dt As Table = Tables("T222") 
Dim hdr As Integer = dt.HeaderRows 
Dim cnt As Integer Dim Book As New XLS.Book() '定义一个Excel工作簿 
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表 
Dim Style As XLS.Style = Book.NewStyle() '定义新样式 
Dim St1 As xls.style = book.newstyle dt.CreateSheetHeader(Sheet,1,0) 
Style.BorderTop = XLS.LineStyleEnum.Thin 
Style.BorderBottom = XLS.LineStyleEnum.Thin 
Style.BorderLeft = XLS.LineStyleEnum.Thin 
Style.BorderRight = XLS.LineStyleEnum.Thin 
Style.BorderColorTop = Color.black 
Style.BorderColorBottom = Color.black 
Style.BorderColorLeft = Color.black 
Style.BorderColorRight = Color.black 
Sheet(0,2).Value = "滨湖热力厂节能空间管理" 
Sheet(0,9).Value = "打印日期:" & Format(Date.Today, "yyyy年MM月dd日") 
St1.FontBold = True 
Sheet(0,2).Style = St1 
For r As Integer = 1 To 6 
 For c As Integer =1 To 21 
 Sheet(r,c).Style = Style 
 Next 
Next 
For c As Integer = 0 To dt.Cols.Count - 1 
 If dt.Cols(c).Visible Then 
 For r As Integer = 0 To dt.Rows.Count - 1 
 sheet(r + hdr+1,cnt).value = dt(r,c) 
 Next 
 cnt = cnt + 1 
 End If 
Next 
 Book.Build() 
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
[此贴子已经被作者于2016/8/2 16:28:54编辑过]

 回到顶部
总数 16 1 2 下一页