当前位置: 首页 > news >正文

【C#】单据打印方案(定义打印模板、条形码、二维码、图片、标签)

系列文章

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 打印边框调整

后期补充

六、资源链接

http://www.lryc.cn/news/39188.html

相关文章:

  • 前后端身份验证
  • 【蓝桥杯嵌入式】ADC模数转换的原理图解析与代码实现(以第十一届省赛为例)——STM32G4
  • Matlab表示 CDF 时间值
  • 基于Halcon的条码定位与识别【包含 一维码 和 二维码 】
  • 每天学一点之多线程
  • 自动化测试必会的数据驱动测试你真的学会了吗?
  • cpp之十大排序算法
  • java-正装照换底色小demo-技术分享
  • (枚举)(模拟)(二位前缀和)99. 激光炸弹
  • vue3+vite项目移动端适配:postcss-pxtorem和amfe-flexible
  • sin x和cos x的导数
  • html下自动消失的提示框jQuery实现
  • 第27篇:Java日期处理总结(一)
  • Linux入门教程——VI/VIM 编辑器
  • 第十四届蓝桥杯三月真题刷题训练——第 10 天
  • 软件测试之jira
  • 传统方式实现SpringMVC
  • RS232/RS485信号接口转12路模拟信号 隔离D/A转换器LED智能调光控制
  • 聊一聊代码重构——封装集合和替换算法的代码实践
  • FPGA解码4K分辨率4line MIPI视频 OV13850采集 提供工程源码和技术支持
  • Map接口及遍历方式
  • 一步步构建自己的前端项目
  • VMware搭建Mac OS环境
  • 【Maven】什么是Maven?Maven有什么用?
  • 【JavaSE】类和对象的详解
  • 2023年中职组“网络安全”赛项广西自治区竞赛任务书
  • 简单的自定义录屏工具
  • 数据结构与算法基础(王卓)(17):KMP算法详解(精讲(最简单、直接、有效的思路方法,答案以及代码原理)
  • 【java基础】HashMap源码解析
  • 实现异步的8种方式,你知道几个?