Foxtable(狐表)用户栏目专家坐堂 → 动态设置报表打印条件,究竟是如何做呢?


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

主题:动态设置报表打印条件,究竟是如何做呢?

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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
动态设置报表打印条件,究竟是如何做呢?  发帖心情 Post By:2017/4/6 23:19:00 [只看该作者]

各位老师您们好,之前,我请教了一个案例,希望能动态设置excel报表的打印条件,对下面这组有重复数据的工作表
第一列 第二列 第三列
张三   2    1.jpg
张三   2    2.jpg
李四   2    3.jpg
李四   2    4.jpg
张三   2    5.jpg
张三   1    6.jpg
王五    2        7.jpg
筛选后,可以自动生成以姓名命名的报表。它的功能是:筛选张三李四后,就不会出现王五的报表,只生成报表张三,里面仅仅只有张三的数据,自动生成报表李四,里面仅仅只有李四的数据。
我上传案例后,老师们帮我找到一种解决方案:
Dim t As Table = Tables("表B")
For Each n As String In t.DataTable.GetValues("第一列", "第一列 is not null" & iif(t.Filter>"", " and (" & t.filter & ")", ""))
    Dim Book As New XLS.Book(ProjectPath & "Attachments\111.xls") '打开模板
    Dim fl As String = ProjectPath & "Reports\" & n & ".xls"
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Sheet(1,10).Value = "<第一列='" & n & "'>"  '写入打印条件
    Book.Build() '生成报表
    Book.Save(fl)
Next

这就是我这次上传的案例中
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:正在学习.zip

,批量导出窗口的按钮一的事件,是可以正常运行的。
今天我需要自动生成新的报表模式,就把上面事件的报表模板111,直接换成了案例中的花名册,结果生成的报表,不能按姓名区分了,虽然可以分别生成张三、李四的报表,但每张报表里含有全部的数据。
我觉得问题是发生在写入打印条件这个环节,但我不懂的是,帮助文档里说“上面这个模版中,打印条件设置在第三行第九列这个单元格”,它的代码就是Sheet(3,9).Value = "<日期 = # " & Date.Today & "#>"

但是我按照报表模板花名册中的行列位置,把写入打印条件改成了    Sheet(2,2).Value = "<第一列='" & n & "'>"  '写入打印条件,还是无法正常运作

究竟这里的行列位置是怎么判断的呢?我看到原本的代码里,1,10的行列位置,也与帮助文档的获取方法略有不同。我觉得1,10的行列位置,对应的是数据的起始点,但照搬后,仍然无法正常运作

求老师们点拨下我,真的非常感谢!

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/7 2:16:00 [只看该作者]

代码换成

 

Sheet(2,4).Value = "<第一列='" & n & "'>" 


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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2017/4/7 8:57:00 [只看该作者]

谢谢老师!我按照您的修改,添加进按钮二的事件里,但生成的报表,还是原来那样的效果。
麻烦您帮下我~~~真的十分感谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:正在学习.zip



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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/7 9:09:00 [只看该作者]

你2楼的例子,我测试,没问题

 

Dim t As Table = Tables("表B")
For Each n As String In t.DataTable.GetValues("第一列", "第一列 is not null" & iif(t.Filter>"", " and (" & t.filter & ")", ""))
    Dim Book As New XLS.Book(ProjectPath & "Attachments\花名册.xls") '打开模板
    Dim fl As String = ProjectPath & "Reports\" & n & ".xls"
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Sheet(2,4).Value = "<第一列='" & n & "'>"  '写入打印条件
    Book.Build() '生成报表
    Book.Save(fl)
Next


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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2017/4/7 14:46:00 [只看该作者]

老师您好,我把您的代码又复制进案例里做了一遍,但还是一样的结果。您看,这是我做出来的结果:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:李四.xls
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:王五.xls
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:张三.xls


我是全选案例,未作筛选得出的这几个报表

会不会是我这个案例本身有什么奇怪的地方啊~~不是代码而是程序的版本啊,曾经的配置文件之类的有问题呢?或者是有杀毒软件干扰 ?

[此贴子已经被作者于2017/4/7 14:53:40编辑过]

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2017/4/7 15:00:00 [只看该作者]

代码没问题,你模板有问题,要加上<End>的

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:花名册.xls


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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2017/4/11 17:15:00 [只看该作者]

老师,不好意思,能否还是请您帮我看看动态设置打印条件的行列判断,它究竟是什么标准呢?
还是我之前的例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:正在学习.zip


我这一次又换了一个更复杂的模板,兼有上两次模板的特点,但是,无论我按照哪次的行列设置,还是无法正常运作。

我觉得这个真的 比较复杂,我也不断地看帮助文档,但这个行列的设置规则,似乎总没有按照我设想的起作用。

麻烦老师帮帮我,十分感谢!

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


加好友 发短信
等级:超级版主 帖子:110624 积分:563022 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/4/11 17:35:00 [只看该作者]

哪个模板?什么问题?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/11 17:41:00 [只看该作者]

 1、你<End>的位置没有写对

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:档案存底.xls

 

 2、数单元格的啊,从0开始数

 

Dim t As Table = Tables("表B")
For Each n As String In t.DataTable.GetValues("第一列", "第一列 is not null" & iif(t.Filter>"", " and (" & t.filter & ")", ""))
    Dim Book As New XLS.Book(ProjectPath & "Attachments\档案存底.xls") '打开模板
    Dim fl As String = ProjectPath & "Reports\" & n & ".xls"
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Sheet(1,15).Value = "<第一列='" & n & "'>"  '写入打印条件
    Book.Build() '生成报表
    Book.Save(fl)
Next



 回到顶部