以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 动态设置报表打印条件,究竟是如何做呢? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=98780) |
||||||||||||
-- 作者:zhuzhi -- 发布时间: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 这就是我这次上传的案例中
,批量导出窗口的按钮一的事件,是可以正常运行的。 今天我需要自动生成新的报表模式,就把上面事件的报表模板111,直接换成了案例中的花名册,结果生成的报表,不能按姓名区分了,虽然可以分别生成张三、李四的报表,但每张报表里含有全部的数据。 我觉得问题是发生在写入打印条件这个环节,但我不懂的是,帮助文档里说“上面这个模版中,打印条件设置在第三行第九列这个单元格”,它的代码就是Sheet(3,9).Value = "<日期 = # " & Date.Today & "#>" 但是我按照报表模板花名册中的行列位置,把写入打印条件改成了 Sheet(2,2).Value = "<第一列=\'" & n & "\'>" \'写入打印条件,还是无法正常运作 究竟这里的行列位置是怎么判断的呢?我看到原本的代码里,1,10的行列位置,也与帮助文档的获取方法略有不同。我觉得1,10的行列位置,对应的是数据的起始点,但照搬后,仍然无法正常运作 求老师们点拨下我,真的非常感谢!
|
||||||||||||
-- 作者:有点色 -- 发布时间:2017/4/7 2:16:00 -- 代码换成
Sheet(2,4).Value = "<第一列=\'" & n & "\'>" |
||||||||||||
-- 作者:zhuzhi -- 发布时间:2017/4/7 8:57:00 -- 谢谢老师!我按照您的修改,添加进按钮二的事件里,但生成的报表,还是原来那样的效果。 麻烦您帮下我~~~真的十分感谢!
|
||||||||||||
-- 作者:有点色 -- 发布时间:2017/4/7 9:09:00 -- 你2楼的例子,我测试,没问题
Dim t As Table = Tables("表B") |
||||||||||||
-- 作者:zhuzhi -- 发布时间:2017/4/7 14:46:00 -- 老师您好,我把您的代码又复制进案例里做了一遍,但还是一样的结果。您看,这是我做出来的结果:
我是全选案例,未作筛选得出的这几个报表 会不会是我这个案例本身有什么奇怪的地方啊~~不是代码而是程序的版本啊,曾经的配置文件之类的有问题呢?或者是有杀毒软件干扰 ? [此贴子已经被作者于2017/4/7 14:53:40编辑过]
|
||||||||||||
-- 作者:有点青 -- 发布时间:2017/4/7 15:00:00 -- 代码没问题,你模板有问题,要加上<End>的
|
||||||||||||
-- 作者:zhuzhi -- 发布时间:2017/4/11 17:15:00 -- 老师,不好意思,能否还是请您帮我看看动态设置打印条件的行列判断,它究竟是什么标准呢? 还是我之前的例子:
我这一次又换了一个更复杂的模板,兼有上两次模板的特点,但是,无论我按照哪次的行列设置,还是无法正常运作。 我觉得这个真的 比较复杂,我也不断地看帮助文档,但这个行列的设置规则,似乎总没有按照我设想的起作用。 麻烦老师帮帮我,十分感谢!
|
||||||||||||
-- 作者:有点蓝 -- 发布时间:2017/4/11 17:35:00 -- 哪个模板?什么问题? |
||||||||||||
-- 作者:有点色 -- 发布时间:2017/4/11 17:41:00 -- 1、你<End>的位置没有写对
2、数单元格的啊,从0开始数
Dim t As Table = Tables("表B") |