Foxtable(狐表)用户栏目专家坐堂 → Excel报表动态设置打印范围


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

主题:Excel报表动态设置打印范围

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


加好友 发短信
等级:三尾狐 帖子:732 积分:5491 威望:0 精华:14 注册:2011/8/28 12:49:00
Excel报表动态设置打印范围  发帖心情 Post By:2012/9/18 10:18:00 [只看该作者]

http://www.foxtable.com/help/topics/0201.htm

帮助中的Excel报表的打印范围条件貌似只能在设计模板的时候写好,如果改条件那么只能重新重新修改模板了,能不能在打印范围的条件里面引用Var变量,这样就更加灵活了.

我这里现在有一个需求是我要打印一个表中,合同号等于选中行的合同号的所有记录(可能是一条,也可能是多条),这样的话在模板里面设置打印范围就不方便了,不知道有没有可能用现有的方法来实现?


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/18 10:26:00 [只看该作者]

 可以。

 <"合同号 = '" & [!变量] & "'">


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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/18 10:32:00 [只看该作者]

最近帮助加了这么一节:

 

动态设置打印条件

我们知道,Excel报表默认只会打印选定行(记录),如果你只选定1行,就会打印1行,如果你选定了10行,就会打印10行。

虽然可以设置一个条件表达式,例如只打印产品为PD01的行:

 


图片点击可在新窗口打开查看此主题相关图片如下:1743.gif
图片点击可在新窗口打开查看
 

但是在模版设置的条件是固定的,而实际工作中,打印条件是动态的,不可能永远只打印符合同一条件的行,难道我们要为每种打印条件单独设置一个模版?显然这是不现实的。
通常我们可以在设计模版的时候,将打印条件设置为: <All>,然后筛选出符合条件的行,再打印报表,不过这还不够“自动化”。

再想一下,上面这么模版中,打印条件设置在第三行第九列这个单元格,如果我们在生成报表之前,动态合成打印条件,然后加载模版,将合成的条件写入到这个单元格中,再生成报表,这样不就可以动态设置打印条件吗?
方案完全可行,例如我们要打印今天的订单:

Dim Book As New XLS.Book(ProjectPath & "Attachments\订单.xls") '打开模板
Dim
fl As String = ProjectPath & "Reports\订单.xls"
Dim
Sheet As XLS.Sheet = Book.Sheets(0)
Sheet
(3,9).Value = "<日期 = # " & Date.Today & "#>" '写入打印条件
Book.Build()
'生成报表
Book.Save(fl)

Dim
Proc As New Process
Proc.File = fl
Proc.Start()

必须将打印条件写入准确的位置,模版中行和列的编号都是从0开始的额,切记。

 

 


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


加好友 发短信
等级:三尾狐 帖子:732 积分:5491 威望:0 精华:14 注册:2011/8/28 12:49:00
  发帖心情 Post By:2012/9/18 14:00:00 [只看该作者]

多谢狐爸,我后来采用的就是这个方法啦


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/9/18 16:50:00 [只看该作者]

快点更新嘛,等不及啊,吊胃口呀.

 回到顶部