C#项目--打印解决方案(支持打印模板、条形码、二维码、图片)
创始人
2024-06-02 11:04:24
0

系列文章

C#项目–业务单据号生成器(定义规则、自动编号、流水号)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787

C#项目–开始日期结束日期范围计算(上周、本周、明年、前年等)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129040663

C#项目–数据实体类使用
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128816638

C#项目–单据审批流方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128972545

C#项目–二维码标签制作及打印(完整版)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126884228

C#项目–条码管理操作手册
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126589496

C#项目–WebAPI发布和IIS部署,及异常处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126539836

C#项目–提高编程效率,代码自动生成
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126890673

C#项目–提高编程效率,Excel数据导入工具
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126427323

C#项目–Windows服务(Service)安装及启停方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053794

C#项目–穿透Session隔离,服务调用外部程序(无窗体界面解决)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053033

C#项目–任务计划实现,使用Quartz类
本文链接:https://blog.csdn.net/youcheng_ge/article/details/123667723

C#项目–《周计划管理关于产前准备模块》解决方案20200203
本文链接:https://blog.csdn.net/youcheng_ge/article/details/122919543

C#项目–项目中,源码解析的正则表达式
本文链接:https://blog.csdn.net/youcheng_ge/article/details/118337074

C#项目–如何获取文件版本和MD5值
本文链接:https://blog.csdn.net/youcheng_ge/article/details/112513871

C#项目–如何测试网络是否连通
本文链接:https://blog.csdn.net/youcheng_ge/article/details/110137288


文章目录

  • 系列文章
  • 前言
  • 一、面临问题
  • 二、解决方案
  • 三、软件开发(源码展示)
    • 3.1 创建xlsm
    • 3.2 打印模板设计
    • 3.3 被调实现端(VBA编程)
    • 3.4 调用操作端(C#编程)
  • 四、运行效果
  • 五、异常问题
    • 5.1 没有条码控件
    • 5.2 条码(条形码、二维码)数据绑定问题
    • 5.3 模板无法调用,权限问题处理
    • 5.4 打印纸张调整
    • 5.5 打印边框调整
  • 六、资源链接


前言

我能抽象出整个世界,但是我不能抽象你。 想让你成为私有常量,这样外部函数就无法访问你。 又想让你成为全局常量,这样在我的整个生命周期都可以调用你。 可惜世上没有这样的常量,我也无法定义你,因为你在我心中是那么的具体。

哈喽大家好,本专栏为【项目实战】专栏,有别于【底层库】专栏,本专栏介绍项目开发过程中,遇到问题的解决方案,是我实际项目开发过程,相对成熟、可靠方法的提炼,我将这些问题的处理思路梳理,撰写本文分享给大家,大家遇到类似问题,可按本文方案处理。

本专栏会持续更新,不断完善,大家有任何问题,可以私信我。本专栏之间关联性较弱(文章之间依赖性较弱,没有阅读顺序区分)。如果您对本专栏感兴趣,欢迎关注吧,我将带你用最简洁的代码,实现最复杂的功能。

·提示:本专栏为项目实战篇,未接触项目开发的同学可能理解困难,不推荐阅读。


一、面临问题

接触过ERP、MES系统的人都知道,离不开单据打印,“不支持单据打印的系统,是没有灵魂的
”。如 用友的ERP产品,提供一个可视化设计界面,可以拖动文本、调整字体、传入参数数据,并打印。

现如今,我们也要实现这一功能,我的想法起码要实现以下几点要求:

①支持打印单据自定义设计,因为服务于业务,难免业务会调整,原先的单据样式变动是较为频繁的。
②支持条形码、二维码的打印,现在21世纪了,条码使用不要太频繁啊,扫码可以避免业务员单据输错。
③支持参数数据传输,说白了就是最基础的功能,打印模板 和 程序相分离,程序传入数据给打印模板,自动生成单据,并打印。
④支持所有打印机,目前市面上打印很多哈,如:标签打印机(斑马、佳能、TSC、格志)、普通打印机(惠普、东芝、得力)、特种打印机(MIMAKI、阿英格、富士施乐)。据我所知,斑马打印机有自己的一套打印设计软件,我们系统开发不能这么搞啊,不能挑设备,要自主研发软件,并兼容所有打印机,做到技术上,不被“卡脖子”。

网上查阅了很多资料,要么是第三方的软件,要money才给使用,钱包伤不起;要么是程序中写死了界面样式,调整打印样式还要改代码,我去你大爷的;要么是可以简单设计,但是不支持条码、图片插入。

难道就没有个免费,可以实现我的要求的方案吗?如果你也遇到这个问题,请阅读本文。

二、解决方案

使用VBA技术,在Excel中设置【打印模板】样式,然后增加按钮事件,程序调用“事件”,实现单据、标签打印。
这样做的好处:
①不用安装第三方插件。你像用友、斑马、网商,需要安装一个打印模板配置插件,而本系统只需要Office的支持,Office全家桶默认计算机都有安装吧,故而你就不需要安装第三方插件。
②解决不同型号打印驱动问题。各个型号的打印机,它们驱动是不一样的。从开发角度,要考虑支持情况,很麻烦,但是打印机他们都做了PC调用的驱动,这是一个突破点。
③自带有网格线,拖拽式设计。不要你考虑计算坐标。
④支持条形码、二维码打印。

三、软件开发(源码展示)

3.1 创建xlsm

xlsm是启用宏的工作簿,创建Excel表格,另存为xlsm即可。

3.2 打印模板设计

根据自己需要设计你要打印的单据 或者 标签的样式,只是样式哦,参数内容不用管,这个由程序调用时传参。
在这里插入图片描述
注意:二维码,你拿VX扫是可以正确识别 3A0N000024,博客安全机制,不打码过不了审。

3.3 被调实现端(VBA编程)

篇幅有限,我没办法一一介绍,不懂的问我吧,毕竟这是一门新的开发语言,我提供源码:
① 按钮事件代码:

'============================================================================================
'函数内容: 钨条标签打印
'函数版本: 0.0.0.0
'创建人: gyc
'修改时间: 2023-02-03
'============================================================================================
'注意事项
'  1.
'  2.
'============================================================================================Private Sub CommandBTN_WuTiao_Click()Call Fun_WuTaioPrintEnd Sub

②被调函数

'============================================================================================
'函数内容: 钨条标签打印
'函数版本: 0.0.0.0
'创建人:gyc
'修改时间: 2023-02-03
'============================================================================================
'注意事项
'  1.
'  2.
'============================================================================================
Public Function Fun_WuTaioPrint(Optional ByVal Copy As Long = 1) As BooleanOn Error GoTo Err_HandleCall SystemInitIf PrinterName = "" Then PrinterName = ShtPara.Cells(2, 2)SheetWuTiao.PageSetup.PrintArea = "B2:E10"SheetWuTiao.PrintOut Copies:=Copy, ActivePrinter:=PrinterNameFun_WuTaioPrint = TrueExit Function'错误处理
Err_Handle:Fun_WuTaioPrint = FalseEnd Function

3.4 调用操作端(C#编程)

后期补充。

四、运行效果

以下是我打印出来的标签。
① 粗丝标签(支持二维码)
在这里插入图片描述
② 合格证标签(支持条形码)
在这里插入图片描述
③ 成品箱标签(支持图片,公司logo)
在这里插入图片描述

五、异常问题

5.1 没有条码控件

需要提前引入,如下组件:
在这里插入图片描述

5.2 条码(条形码、二维码)数据绑定问题

后期补充

5.3 模板无法调用,权限问题处理

后期补充

5.4 打印纸张调整

后期补充

5.5 打印边框调整

后期补充

六、资源链接

相关内容

热门资讯

和我们一样享受春天初中作文3... 和我们一样享受春天初中作文350字 篇一春天是一个令人心旷神怡的季节,大自然万物复苏,给人们带来了无...
我是谁给自己定位初一作文通用... 我是谁给自己定位初一作文 第一篇世上只有妈妈好......每当我听到这歌,就会情不自禁地想:人们常说...
愉快的暑假作文初一400字精... 愉快的暑假作文初一400字 第一篇经过车船辗转、长途跋涉,我们终于来到了大鹿岛。一上岛我们就找到旅店...
初一作文集600字共20篇 初一作文集600字 第一篇雨从天空飘落,伴随着它那欢快的足音,花草荡漾出陶醉的美意;它和着自然清新的...
梦游星空初中作文800字(推... 梦游星空初中作文800字 篇一梦游星空我有一个梦想,那就是能够梦游星空。每当夜晚来临,我总是被漆黑的...
致已逝的七年级作文700字推... 致已逝的七年级作文700字 第一篇童年,美好而纯真。可是,它终将会逝去。我童年时最大的乐趣,莫过于和...
秋雨作文-秋雨的作文【精选3... 秋雨作文-秋雨的作文 篇一秋雨的作文秋天是一个多雨的季节,而秋雨更是秋天的象征。秋雨给大地带来了滋润...
初一的心事(经典3篇) 初一的心事 篇一初一的心事总是特别多,仿佛一瞬间从小学生变成了初中生,面对着新的学校、新的环境和新的...
告别同学的作文初一推荐25篇 告别同学的作文初一 第一篇时光匆匆如流水,转眼间,六年过去,我们即将毕业,昔日的时光不再重现,昔日的...
意外之喜作文(经典6篇) 意外之喜作文 篇一意外之喜总是让人心生欢喜和感激,它们常常出现在我们生活的某个角落,给我们带来意想不...
小兔子花初中作文【通用5篇】 小兔子花初中作文 篇一小兔子花我家后院有一个小花园,里面有各种各样的花。其中最引人注目的就是一株小兔...
不曾后悔初中作文(推荐5篇) 不曾后悔初中作文 篇一初中三年,是人生中最为关键的阶段之一。在这段时间里,我经历了许多挑战和困难,但...
我和我的祖国作文初一【精彩6... 我和我的祖国作文初一 篇一我和我的祖国我和我的祖国有着深厚的情感纽带。祖国是我们生活的土地,是我们成...
严母作文600字【最新3篇】 严母作文600字 篇一:严母的教育方式严母作文600字 篇二:严母的爱与关怀严母作文600字 篇三严...
如何指导初中学生写作文(优质... 如何指导初中学生写作文 篇一初中学生写作文是培养学生语言表达能力和思维逻辑能力的重要途径之一。然而,...
我的初中生活作文(经典6篇) 我的初中生活作文 篇一初中生活是我人生中的一个重要阶段,它塑造了我成长的轨迹,给予了我许多难忘的回忆...
掌心里的爱作文【优秀5篇】 掌心里的爱作文 篇一掌心里的爱爱是一种无私的情感,它无所不在,无处不在。在我们的生活中,有很多形式的...
全世界化成一滴蓝色的眼泪 初... 全世界化成一滴蓝色的眼泪 初中生作文 篇一全世界化成一滴蓝色的眼泪蓝色的眼泪从天空中滴落,汇聚成一滴...
我印象最深的人七年级写老师的... 我印象最深的人七年级写老师的作文 篇一我印象最深的人是我的语文老师,她是我七年级的班主任。她是一个非...
我属于你初一作文(推荐5篇) 我属于你初一作文 篇一我属于你初一作文初中生活,是我人生中重要的一个阶段。刚踏入初中的时候,我有些紧...