最近帮助加了这么一节:
动态设置打印条件
我们知道,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开始的额,切记。