【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 打印边框调整
后期补充
六、资源链接
相关文章:
【C#】单据打印方案(定义打印模板、条形码、二维码、图片、标签)
系列文章 C#项目–业务单据号生成器(定义规则、自动编号、流水号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787 C#项目–开始日期结束日期范围计算(上周、本周、明年、前年等) 本文链接&…...
前后端身份验证
1、web 开发模式 【】基于服务端渲染的传统 Web 开发模式 【】基于前后端分离的新型 Web 开发模式:依赖于 Ajax 技术的广泛应用。后端只负责提供 API 接口,前端使用 Ajax 调用接口的开发模式 2、身份认证 【】服务端渲染推荐使用 Session 认证机制 【】…...
【蓝桥杯嵌入式】ADC模数转换的原理图解析与代码实现(以第十一届省赛为例)——STM32G4
🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 - 蓝…...
Matlab表示 CDF 时间值
从 CDF 纪元对象中提取日期信息。CDF 表示时间的方式与 MATLAB 不同。CDF 将日期和时间表示为自 1-Jan-0000 以来的毫秒数。这在 CDF 术语中称为纪元。为了表示 CDF 日期,MATLAB 使用一个称为 CDF 纪元对象的对象。MATLAB 还可以将日期和时间表示为日期时间值或日期序列号,即…...
基于Halcon的条码定位与识别【包含 一维码 和 二维码 】
1.针对一维码问题,先列代码: dev_update_off () dev_close_window () dev_open_window (0, 0, 600, 819, black, WindowHandle) dev_set_draw (margin) *读图 read_image (Image, 20221213-174036.png)*获取一维码区域对原图进行抠图 gen_rectangle1 (ROI_0, 2169.33, 1835.…...
每天学一点之多线程
多线程 一、相关概念 并发与并行 并行(parallel):指多个事件任务在同一时刻发生(同时发生)。 并发(concurrency):指两个或多个事件在同一个微小的时间段内发生。程序并发执行可以…...
自动化测试必会的数据驱动测试你真的学会了吗?
数据驱动测试 在实际的测试过程中,我们会发现好几组用例都是相同的操作步骤,只是测试数据的不同,而我们往往需要编写多次用例来进行测试,此时我们可以利用数据驱动测试来简化该种操作。 参数化: 输入数据的不同从而…...
cpp之十大排序算法
十大排序算法 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-riZ9z3wf-1678258189998)(null)] 排序算法的稳定性:在具有多个相同关键字的记录中,若经过排序这些记录的次序保持不变,说排序算法是稳定的。 插入排序…...
java-正装照换底色小demo-技术分享
文章目录前言java-正装照换底色小demo-技术分享01 实现思路02 效果02::01 原图:02::02 执行单元测试:02::03 效果:03 编码实现前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。 而且听说点赞…...
(枚举)(模拟)(二位前缀和)99. 激光炸弹
目录 题目链接 一些话 切入点 流程 套路 ac代码 题目链接 99. 激光炸弹 - AcWing题库 数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字&am…...
vue3+vite项目移动端适配:postcss-pxtorem和amfe-flexible
一,定义 postcss-pxtorem PostCSS 的一个插件,可以从像素单位生成 rem 单位。 amfe-flexible amfe-flexible是配置可伸缩布局方案,主要是将1rem设为viewWidth/10。 二,使用 1. 设置 viewport 在 index.html 中: &l…...
sin x和cos x的导数
我们都知道(sinx)′cosx(\sin x)\cos x(sinx)′cosx,(cosx)′−sinx(\cos x)-\sin x(cosx)′−sinx,但是为什么呢? sinx\sin xsinx的导数 (sinx)′limΔx→0sin(xΔx)−sinxΔx(\sin x)\lim\limits_{\Delta x\rightarrow 0…...
html下自动消失的提示框jQuery实现
引言 最近在找一个可以自动消失的提示框,找来找去,找到了这个:提示框设置_html页面提示框等待一定时间消失博主写得很好,可以直接复制运行出来,我也从中得以受益。本篇文章对这篇博客的代码做了一些小的更新ÿ…...
第27篇:Java日期处理总结(一)
目录 1、Date类 1.1 如何实例化Date对象 1.2 Date相关操作方法 1.3 如何获取当前日期...
Linux入门教程——VI/VIM 编辑器
前言 本文小新为大家带来 Linux入门教程——VI/VIM 编辑器 相关知识,具体内容包括VI/VIM是什么,VIM的三种工作模式介绍,包括:一般模式,编辑模式,指令模式,以及模式间转换等进行详尽介绍~ 不积跬…...
第十四届蓝桥杯三月真题刷题训练——第 10 天
目录 第 1 题:裁纸刀 问题描述 运行限制 代码: 第 2 题:刷题统计 问题描述 输入格式 输出格式 样例输入 样例输出 评测用例规模与约定 运行限制 代码: 第 3 题:修建灌木 问题描述 输入格式 输出格式 …...
软件测试之jira
Jira 1. Jira 概述 JIRA 是澳大利亚 Atlassian 公司开发的一款优秀的问题跟踪管理软件工具,可以对各种类型的问题进行跟踪管理,包括缺陷、任务、需求、改进等。JIRA采用J2EE技术,能够跨平台部署。它正被广泛的开源软件组织,以及…...
传统方式实现SpringMVC
一、初次尝试SpringMVC 1.1、在pom.xml中添加依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.2.6.RELEASE</version></dependency><dependency><grou…...
RS232/RS485信号接口转12路模拟信号 隔离D/A转换器LED智能调光控制
特点:● RS-485/232接口,隔离转换成12路标准模拟信号输出● 可选型输出4-20mA或0-10V控制其他设备● 模拟信号输出精度优于 0.2%● 可以程控校准模块输出精度● 信号输出 / 通讯接口之间隔离耐压3000VDC ● 宽电源供电范围:10 ~ 30VDC● 可靠…...
聊一聊代码重构——封装集合和替换算法的代码实践
代码重构相关内容 聊一聊代码重构——我们为什么要代码重构 聊一聊代码重构——代码中究竟存在哪些坏代码 聊一聊代码重构——关于变量的代码实践 聊一聊代码重构——关于循环逻辑的代码实践 聊一聊代码重构——关于条件表达式的代码实践 聊一聊代码重构——程序方法上的…...
FPGA解码4K分辨率4line MIPI视频 OV13850采集 提供工程源码和技术支持
目录1、前言2、Xilinx官方主推的MIPI解码方案3、纯Vhdl方案解码MIPI4、vivado工程介绍5、上板调试验证6、福利:工程代码的获取1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰…...
Map接口及遍历方式
1、Map接口实现类的特点1)Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value(无序)2) Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中3) Map 中的key不允许重复import java.util.HashMap; import java…...
一步步构建自己的前端项目
一、我们先把webpack走通 1、先安装相关依赖,webpack是用来处理命令行参数的,但是我不准备使用webpack-cli,但是还是要求必须安装webpack-cli npm install webapck webpack-cli --save-dev2、npm init -y 3、创建项目结构 build.js cons…...
VMware搭建Mac OS环境
推荐阅读 Proxifier逆向分析(Mac) MacOS Burp2021安装配置 突破iOS App双向认证抓包 App绕过iOS手机的越狱检测 iOS系统抓包入门实践之短链 各种学习环境更新MacOS虚拟机 Android和iOS静态代码扫描工具 iOS系统抓包之短链-破解双向证书 Android和iOS应用源码的静态分析…...
【Maven】什么是Maven?Maven有什么用?
目录 一、什么是 Maven 二、Maven 能解决什么问题 三、Maven 的优势举例 四、Maven 的两个经典作用 4.1 Maven 的依赖管理 4. 2 项目的一键构建 💟 创作不易,不妨点赞💚评论❤️收藏💙一下 一、什么是 Maven Maven 的正确发…...
【JavaSE】类和对象的详解
前言: 大家好,我还是那个不会打拳的程序猿。今天我给大家讲解的是类和对象,相信大家在之前的学习中都是面向过程的思想,那么今天就让我们走向面向对象的世界吧。 目录 1.面向过程VS面向对象 1.1什么是面向过程 1.2什么是面向对…...
2023年中职组“网络安全”赛项广西自治区竞赛任务书
2023年中职组“网络安全”赛项 广西自治区竞赛任务书 一、竞赛时间 总计:360分钟 需求环境可私信博主!点个赞加三连吧! 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A、B模块 A-1 登录安全加固 180分钟 200分 A-2…...
简单的自定义录屏工具
在csdn上写文章,需要配一些操作动态图,需要针对电脑录屏,可能是整个屏幕录屏,也可能是某窗口,甚至是某一小块区域。 动态图最好是gif格式,方便直接嵌入文章中。 一、设计 窗口类widget 切屏类Capturescr…...
数据结构与算法基础(王卓)(17):KMP算法详解(精讲(最简单、直接、有效的思路方法,答案以及代码原理)
本文具体思路参考: (最后证明,该教材/网课实际上是最有效的) DS第四章【3】KMP1_哔哩哔哩_bilibili 中间走的一些弯路的教材: 第06周05--第4章串、数组和广义表5-4.3串的操作--串的匹配算法2--KMP算法_哔哩哔哩_bi…...
【java基础】HashMap源码解析
文章目录基础说明构造器put方法(无扩容,无冲突)put方法(无冲突,有扩容)put方法(有冲突,无树化)put方法(有冲突,树化)remove方法&#…...
wordpress好用的企业展示主题/百度云盘登录电脑版
来源:https://www.zhihu.com/question/22418107/answer/285989585我不太喜欢跟她打电话,也懒得跟她沟通。 嫌她反应好慢,理解能力又差,也没见过什么市面,又笨又善良,因此被骗过很多次也不长记性。好多时候跟…...
在福州的网站制作公司/推广软件app
转自:http://blog.csdn.net/cpf2016/article/details/45534527 1.相关概念 (1)webx中的MVC 在webx中control就是action,view和layout、control、screen、template等概念相关。 layout指页面布局;control指页头、页脚、…...
网站建设与制作/百度推广托管
Part 13 Jay&Gloria ——2018.10.12(五) 写 ——2018.10.13(六) 读 狗娘养...你给我的螺丝刀不对 Ah, son of a- You gave me the wr…...
wordpress目录分页/正规网站建设服务
压缩文件的解压码是一种打开密码,想要解压文件就必须输入解压码才能成功解压文件,如果不知道解压码,可以通过破解软件找回正确的密码。比如奥凯丰 压缩包解密大师 添加压缩包(支持zip、rar、7z压缩包)到软件中&#x…...
做网站怎么样/百度云搜索引擎入口百度网盘
--取平均值 AVG() :求sal平均值 select avg(sal) as avg_sal from emp; --求和 SUM() 对sal求和 select sum(sal) as sum_sal from emp; --求最大值 MAX()、最小值MIN() 对sal进行操作 select max(sal) as max_sal,min(sal) as min_sal from emp; --求行…...
个人门户网站建设流程/培训机构查询网
看到渣浪的查看文章或者查看大图有个效果:弹窗查看内容时,如果内容过长有滚动条,则滚动条会被放到body区滚动 什么意思呢? 看个图片,一般正常弹窗是有宽高限制的,如果内容过长则直接在弹窗中进行滚动 点我预…...