本文于2023年9月11日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!
内容提要
- 用户窗体
- ListView控件
- 连续打印
大家好,我是冷水泡茶,今天在EXCELHOME论坛上看到一个求助贴:小票打印机如何实现Excel这样的排版打印效果?
他的原始数据是这样的一张表:订单详情列表
这张表看上去还有点奇怪,表头有两行,商品名称也在表头中,对应下面一行是商品单价。如果说我来做这张表,是不太可能象这样设计的。但我们能有什么办法呢,得按照“客户“的要求来啊
他的需求是这样的:
就是按照图示模板选择打印或者全部打印,还有一个“重要提示”:
就是备注里有内容,但是商品数量都为0的也要打印,也就是全部是赠送的东西。
仔细琢磨了一下午,基本实现要求的打印功能,我们一起来看一下:
基本思路与过程:
1、设置用户窗体,在其上放置一个ListView控件,用来显示订单,供选择打印。
加载了数据的ListView:
2、调整“打印模板”,固定格式,只保留一条商品名细行:
把所有数据都清空,以防出现多余的数据。
3、增加一个打印表“Print”,用来循环打印,之所以不在原先的模板中直接打印,是因为它的行数不固定,需要插入或删除行。在原来的模板中操作有点麻烦,倒不如在每次打印前从模板中复制固定的打印格式到“Print”表,根据情况插入行,不需要考虑删除行的问题:
(1)当点打印时,根据选择的ListView中的记录,把订单数据逐一填写到这张表中,如果商品种类数大于1,则需要插入行。
(2)如果出现订单数量为0但备注有信息时,我们去判断备注中包含的商品名称,并把它相应填到商品名称栏,并提取对应的单价。这里默认备注中必然有至少一个商品名称,与表头商品名称完整匹配,否则打印模板中商品明细将没有数据。
4、在明细表“打印数据”中添加一个命令按钮,用来显示打印窗体:
5、所有提及的表格,名称不能更改,表头字段以及模板字段均不能更改,但格式可以调整设置。
6、由于时间关系,表格、窗体、控件的格式都没有去仔细优化调整,有的看起来还是比较粗糙,在这里就只能说抱歉了,待日后有需要时再慢慢美化吧。
7、这个案例可以作为一个小型的网店甚至实体店使用(需要根据实际情况再改造一下),如果没有其他ERP系统或者进销存系统再或者销售管理系统的话,将就着用用也不错。
8、如果再深挖,他这个“打印数据”,如果能参照我们分享过的【收费管理系统】进行设计,从录入到打印一气呵成,那就“完美”了。
动画演示
~~~~~~End~~~~~~
喜欢就点个赞、点在看、留个言、分享一下呗!感谢!