当前位置: 首页 > 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 打印边框调整

后期补充

六、资源链接

相关文章:

【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的导数

我们都知道(sin⁡x)′cos⁡x(\sin x)\cos x(sinx)′cosx,(cos⁡x)′−sin⁡x(\cos x)-\sin x(cosx)′−sinx,但是为什么呢? sin⁡x\sin xsinx的导数 (sin⁡x)′lim⁡Δx→0sin⁡(xΔx)−sin⁡xΔx(\sin x)\lim\limits_{\Delta x\rightarrow 0…...

html下自动消失的提示框jQuery实现

引言 最近在找一个可以自动消失的提示框,找来找去,找到了这个:提示框设置_html页面提示框等待一定时间消失博主写得很好,可以直接复制运行出来,我也从中得以受益。本篇文章对这篇博客的代码做了一些小的更新&#xff…...

第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智能调光控制

特点&#xff1a;● RS-485/232接口&#xff0c;隔离转换成12路标准模拟信号输出● 可选型输出4-20mA或0-10V控制其他设备● 模拟信号输出精度优于 0.2%● 可以程控校准模块输出精度● 信号输出 / 通讯接口之间隔离耐压3000VDC ● 宽电源供电范围&#xff1a;10 ~ 30VDC● 可靠…...

聊一聊代码重构——封装集合和替换算法的代码实践

代码重构相关内容 聊一聊代码重构——我们为什么要代码重构 聊一聊代码重构——代码中究竟存在哪些坏代码 聊一聊代码重构——关于变量的代码实践 聊一聊代码重构——关于循环逻辑的代码实践 聊一聊代码重构——关于条件表达式的代码实践 聊一聊代码重构——程序方法上的…...

FPGA解码4K分辨率4line MIPI视频 OV13850采集 提供工程源码和技术支持

目录1、前言2、Xilinx官方主推的MIPI解码方案3、纯Vhdl方案解码MIPI4、vivado工程介绍5、上板调试验证6、福利&#xff1a;工程代码的获取1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了&#xff0c;MIPI解码难度之高&#xff0c;令无数英雄竞折腰…...

Map接口及遍历方式

1、Map接口实现类的特点1)Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value&#xff08;无序&#xff09;2) Map中的key和value可以是任何引用类型的数据&#xff0c;会封装到HashMap$Node对象中3) Map 中的key不允许重复import java.util.HashMap; import java…...

一步步构建自己的前端项目

一、我们先把webpack走通 1、先安装相关依赖&#xff0c;webpack是用来处理命令行参数的&#xff0c;但是我不准备使用webpack-cli&#xff0c;但是还是要求必须安装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 项目的一键构建 &#x1f49f; 创作不易&#xff0c;不妨点赞&#x1f49a;评论❤️收藏&#x1f499;一下 一、什么是 Maven Maven 的正确发…...

【JavaSE】类和对象的详解

前言&#xff1a; 大家好&#xff0c;我还是那个不会打拳的程序猿。今天我给大家讲解的是类和对象&#xff0c;相信大家在之前的学习中都是面向过程的思想&#xff0c;那么今天就让我们走向面向对象的世界吧。 目录 1.面向过程VS面向对象 1.1什么是面向过程 1.2什么是面向对…...

2023年中职组“网络安全”赛项广西自治区竞赛任务书

2023年中职组“网络安全”赛项 广西自治区竞赛任务书 一、竞赛时间 总计&#xff1a;360分钟 需求环境可私信博主&#xff01;点个赞加三连吧&#xff01; 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A、B模块 A-1 登录安全加固 180分钟 200分 A-2…...

简单的自定义录屏工具

在csdn上写文章&#xff0c;需要配一些操作动态图&#xff0c;需要针对电脑录屏&#xff0c;可能是整个屏幕录屏&#xff0c;也可能是某窗口&#xff0c;甚至是某一小块区域。 动态图最好是gif格式&#xff0c;方便直接嵌入文章中。 一、设计 窗口类widget 切屏类Capturescr…...

数据结构与算法基础(王卓)(17):KMP算法详解(精讲(最简单、直接、有效的思路方法,答案以及代码原理)

本文具体思路参考&#xff1a; &#xff08;最后证明&#xff0c;该教材/网课实际上是最有效的&#xff09; DS第四章【3】KMP1_哔哩哔哩_bilibili 中间走的一些弯路的教材&#xff1a; 第06周05--第4章串、数组和广义表5-4.3串的操作--串的匹配算法2--KMP算法_哔哩哔哩_bi…...

【java基础】HashMap源码解析

文章目录基础说明构造器put方法&#xff08;无扩容&#xff0c;无冲突&#xff09;put方法&#xff08;无冲突&#xff0c;有扩容&#xff09;put方法&#xff08;有冲突&#xff0c;无树化&#xff09;put方法&#xff08;有冲突&#xff0c;树化&#xff09;remove方法&#…...

wordpress好用的企业展示主题/百度云盘登录电脑版

来源&#xff1a;https://www.zhihu.com/question/22418107/answer/285989585我不太喜欢跟她打电话&#xff0c;也懒得跟她沟通。 嫌她反应好慢&#xff0c;理解能力又差&#xff0c;也没见过什么市面&#xff0c;又笨又善良&#xff0c;因此被骗过很多次也不长记性。好多时候跟…...

在福州的网站制作公司/推广软件app

转自&#xff1a;http://blog.csdn.net/cpf2016/article/details/45534527 1.相关概念 &#xff08;1&#xff09;webx中的MVC 在webx中control就是action&#xff0c;view和layout、control、screen、template等概念相关。 layout指页面布局&#xff1b;control指页头、页脚、…...

网站建设与制作/百度推广托管

Part 13 Jay&Gloria ——2018.10.12(五) 写 ——2018.10.13(六) 读 狗娘养...你给我的螺丝刀不对 Ah, son of a- You gave me the wr…...

wordpress目录分页/正规网站建设服务

压缩文件的解压码是一种打开密码&#xff0c;想要解压文件就必须输入解压码才能成功解压文件&#xff0c;如果不知道解压码&#xff0c;可以通过破解软件找回正确的密码。比如奥凯丰 压缩包解密大师 添加压缩包&#xff08;支持zip、rar、7z压缩包&#xff09;到软件中&#x…...

做网站怎么样/百度云搜索引擎入口百度网盘

--取平均值 AVG() :求sal平均值 select avg(sal) as avg_sal from emp; --求和 SUM() 对sal求和 select sum(sal) as sum_sal from emp&#xff1b; --求最大值 MAX()、最小值MIN() 对sal进行操作 select max(sal) as max_sal,min(sal) as min_sal from emp&#xff1b; --求行…...

个人门户网站建设流程/培训机构查询网

看到渣浪的查看文章或者查看大图有个效果&#xff1a;弹窗查看内容时&#xff0c;如果内容过长有滚动条&#xff0c;则滚动条会被放到body区滚动 什么意思呢&#xff1f; 看个图片&#xff0c;一般正常弹窗是有宽高限制的&#xff0c;如果内容过长则直接在弹窗中进行滚动 点我预…...