Foxtable(狐表)用户栏目专家坐堂 → [求助]基于数据表的统计表能设置模板吗


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

主题:[求助]基于数据表的统计表能设置模板吗

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18064 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/3/5 15:35:00 [只看该作者]

其实,重复的标题行用headerrow,签名用footerrow都能整好。
包括复制左边的标题列,也可以整好。也就是把模板KK最终形成模板AA-副本的样子。

唯一没办法的是报表的第几页,共几页的问题。共几页也可以用笨办法,也就是  math.ceiling(tables("XX").rows.count/每页输出行数)
但输出的是第几页实在是痛苦得紧啊。-----唯一的问题就是要知道当前输出的是第几页
放到页眉页脚不是不行,但毕竟页眉页脚有其它的用处了。

页脚那里是显示整个报表册的所有页码的。
上面所说的第**页共**页是用来显示这一个分表册的页码的。
[此贴子已经被作者于2018/3/5 15:44:03编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/5 15:52:00 [只看该作者]

如果确实要做,用headerrow处理吧,通过代码计算。

 

第几页:假如你模板变成了3页;要打印35行数据;每页10行数据。

 

第一次进入headerrow:vars("页1") = 1; vars("页2") = 1 + 4; vars("页3") = 1+4*2

 

第n次进入headerrow:vars("页1") += 1; vars("页2") = vars("页1") + math.ceiling(35 / 10); vars("页3") = vars("页1") + math.ceiling(35 / 10)*2

[此贴子已经被作者于2018/3/5 15:52:11编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18064 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/3/5 15:55:00 [只看该作者]

是放到什么事件里呢?

如果方法是一样的,可以自己定义一个函数,但在哪里用它呢?

[此贴子已经被作者于2018/3/5 15:56:03编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/5 16:01:00 [只看该作者]

BuildPageHeader 事件

 

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

 


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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18064 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/3/5 23:02:00 [只看该作者]

试了N次,还是纵向分为三页的页码是一样的.
假如纵向三页,横向10页,那不是相当于要设3*10个变量?

这个咋个整法

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


加好友 发短信
等级:超级版主 帖子:106316 积分:540715 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/3/5 23:09:00 [只看该作者]

没办法,这就是Execl的短板。还不如看一下专业报表吧。

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18064 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/3/5 23:43:00 [只看该作者]

算了,还是直接用VBA的两行代码来解决这个问题吧.
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("报表文件的全路径")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
With Ws.PageSetup
    .HeaderMargin = 70   '页面顶端到页眉的距离
    .RightHeader = "第 &P 页  共 &N 页" 
End With
App.Visible = True
Ws.PrintPreview
App.Quit

 '直接在右上角的代码解决这个问题算了.--------免得自己去写好多行.

专业报表其实还是挺复杂的.不适合我这样的菜鸟
[此贴子已经被作者于2018/3/5 23:44:22编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18064 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/3/5 23:47:00 [只看该作者]

顺便请教:
.PrintTitleRows = Ws.Rows(1).Address '打印行标题(在每一页的顶部重复出现)

----如果行标题有5行,这句该怎么写?
试了一下

.PrintTitleRows = Ws.Rows(5).Address '打印行标题(在每一页的顶部重复出现)
好象不行

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/6 9:09:00 [只看该作者]

以下是引用chnfo在2018/3/5 23:02:00的发言:
试了N次,还是纵向分为三页的页码是一样的.
假如纵向三页,横向10页,那不是相当于要设3*10个变量?

这个咋个整法

 

横向,如果有10页,就设置10个变量啊,每页一个变量啊。

 

设置headerrow之后,每次换页,都会触发事件的啊,假如你纵向有3页,就会触发3次事件。每次你给10个变量赋值即可。

 

你生成模板的时候,要根据列数计算需要多少个变量,命名为 页面1、页面2、页面3 这样即可。

 

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/6 9:11:00 [只看该作者]

以下是引用chnfo在2018/3/5 23:47:00的发言:

 
.PrintTitleRows = Ws.Rows(5).Address '打印行标题(在每一页的顶部重复出现)
好象不行

 

.PrintTitleRows = Ws.range("1:5").Address


 回到顶部
总数 30 上一页 1 2 3