使用Excel2010条码控件碰到的问题及解决办法
iamlaosong文
在使用Excel条码过程中碰到几个难以解决的问题,有的问题又因为没有及时发现导致浪费了很多时间和耗材,用户意见也很大。这些问题出现的原因是什么,目前还不知道,所以解决办法也只是一些变通的办法。本文最后有条码使用工具下载链接,可以查看源码学习。现将问题及解决办法总结如下:
1、条码宽度和数据显示问题
条码下方可以显示数据(ShowData=1),当数据字符串较长时,code39条码比较宽,显示没什么问题,控件大小和条码大小比较一致,就是条码太宽了,扫描不方便。code128条码采用压缩编码,宽度比较窄,扫描方便。实际使用时,控件占用的宽度比较大,实际的条码要小得多,这还没什么,关键是下方的数据宽度大于条码宽度,而且数据显示不全,前面给截掉了。测试发现,19位以下,显示没有问题。长度达到20位的时候,只能显示19位,达到30位的时候显示27位。在没有找到解决办法之前,只好不显示数据,再在下方添加一个文本框显示数据。如下图,中间的数字就是条码自带的,code128显示不全;code39则没有问题:
code128
code39
实际使用发现,条码控件尽管可以设置不显示数据,但位置还是占着,所以要想条码和数字位置合适,就需要将文本框置于顶层,再靠近条码,调整到适当位置即可。设计界面文本框内容被条码覆盖了一部分,如下图:
但打印后的效果很好,没有覆盖的问题,如下图:
可奇怪的是用户那边却不是这样,用户那边是所见即所得,所以位置要调开才行。
Code 128码与Code 39码都是常用的条码类型,都广泛运用在企业内部管理、生产流程、物流控制系统方面。不同的在于Code 128比Code 39能表现更多的字符,单位长度里的编码密度更高。当单位长度里不能容下Code 39编码或编码字符超出了Code 39的限制时,就可选择Code 128来编码。所以Code 128比Code 39更具灵性。
而且CODE128码支持数字、字母和符号,支持的字符比较灵活,在同样长度的条码中可容纳的字符长度较长(高密度),条码长度与字符串长度无明显的敏感性,所以CODE128码是企业内部管理系统最为广泛使用的条码码制。
2、批量打印自动更新问题
批量打印时条码需要跟随单元格中的数据变化才对,使用中发现单元格数据变化后条码没有变化,或者刷新后(ActiveSheet.BarCodeCtrl1.Refresh)表面上看也变化了,只是打印的时候没有变化。打印时屏幕上显示的条码倒是在变,但打印出来的条码都是同一个条码。解决办法是改变控件大小,比如高度,如下:
ActiveSheet.BarCodeCtrl1.Height = ActiveSheet.BarCodeCtrl1.Height + 1
ActiveSheet.BarCodeCtrl1.Height = ActiveSheet.BarCodeCtrl1.Height - 1
条码应用效果,可以自动更新。
此法使用中碰到条码越来越小的问题,所以下面的解决办法更好。
3、条码越来越小的问题
采用上面的方法解决了条码不能自动更新的问题,测试也没问题,但客户使用的时候发现,数据量很大的时候,运行到后来发现条码高度越来越小,最后就是0了,然后就报错了,似乎那个高度加1没起作用,一直在减1,同样的数据我测试却没有发现问题,难道是我的电脑太老了!问题出得莫名其妙,解决办法就是增加冗余,每次更新高度前重新设置一下高度,这样问题倒是没有再出现:
ActiveSheet.BarCodeCtrl1.Style = 7
ActiveSheet.BarCodeCtrl1.Height = 24.75
ActiveSheet.BarCodeCtrl1.Width = 323.25
或者用下面的办法,也没有问题:
hh = ActiveSheet.BarCodeCtrl1.Height
ActiveSheet.BarCodeCtrl1.Height = hh - 1
ActiveSheet.BarCodeCtrl1.Height = hh
4、打印速度
这个问题实际上和条码关系不大。对账单的打印是生成一张打印一张,所以每张单据都要发送打印命令(ActiveSheet.PrintOut),因此,电脑和打印机握手就会占用很多时间,大批量打印时,速度就会让人难以忍受,好在2010版Excel可以直接将打印结果输出为PDF文件,然后将这些单个的PDF文件合并后打印,速度就大大提高了。参见:解决Excel中VBA批量打印速度慢的问题
本文使用的条码打印工具下载:中行对账单打印工具
使用Excel2010条码控件碰到的问题及解决办法相关推荐
- 对于引用的控件被拒绝访问的解决办法的补充(续)
在上个月,我曾经写过"对于引用的控件被拒绝访问的解决办法的补充", 见http://liuyuer.cnblogs.com/archive/2005/10/12/253063.ht ...
- C#中引用第三方ocx控件引发的问题以及解决办法
C#中引用第三方ocx控件引发的问题以及解决办法 参考文章: (1)C#中引用第三方ocx控件引发的问题以及解决办法 (2)https://www.cnblogs.com/XuPengLB/p/759 ...
- PPT中《此演示文稿中的一些控件无法激活》的解决办法
http://apps.hi.baidu.com/share/detail/6016136 PPT中<此演示文稿中的一些控件无法激活>的解决办法 在PPT做课件,在其中插入Flash动画, ...
- Office 2016使用NTKO OFFICE控件提示“文件存取错误”的解决办法
2019独角兽企业重金招聘Python工程师标准>>> 之前使用NTKO,电脑安装的说OFFICE2007,但是前2天电脑固态硬盘坏了 ,重新安装了系统,安装的说win10和offi ...
- android在代码中利用Spinner控件设置联动地区的解决办法
需求就是地区选择可以弹出来,因为百度地图一般是获取当前的地址,我们需要的是他的家庭地址 所以才有了三级Spinner解决 地区问题 就是当用户填写了之后,下次再修改,你要给他显示出来上次填写的值, ...
- Code128 Fontware条码控件介绍
Code128 Fontware条码控件使你的Windows/Linux/UNIX/Mac 下的应用程序创建Code128条码变得极其容易,并且提供了TrueType,PostScript Type ...
- JavaScript使用ACTIVEX控件引起崩溃问题的解决
JavaScript使用ACTIVEX控件引起崩溃问题的解决 问题 在本人目前的项目中,前端部分完全使用EXTJS基于"One-Page"理念搭建.除了一个HTML作为基本容器外, ...
- VS2008 在IE8中 调试 ActiveX控件 无法进入断点的解决方法 设置VS2008和IE8 调试ATL MFC ActiveX控件
VS2008 在IE8中 调试 ActiveX控件 无法进入断点的解决方法 设置VS2008和IE8 调试ATL MFC ActiveX控件 参考文章: (1)VS2008 在IE8中 调试 Acti ...
- IE11浏览器中的My97日历控件刷新后无法打开问题解决办法
IE11浏览器中的My97日历控件刷新后无法打开问题解决办法:(谷歌浏览器下正常.IE11失效) 解决办法: 1:找到WdatePicker.js 2:将$crossFrame:true 改为$cro ...
最新文章
- 04号团队-团队任务5:项目总结会
- java arp 攻击_基于Jpcap的Java ARP断网攻击
- OOD沉思录 --- 类和对象的关系 --- 使用关系
- C++ Primer 5th笔记(chap 12 动态内存)allocator类
- 王道考研——计算机组成原理(第二章 数据的表示和运算)
- c#可移动不规则窗体
- python第k序列元素查找_Python寻找第k小的元素
- 日本显示屏巨头JDI不敌业务压力,宣布接受中方注资...
- [转载] python字符串数组字典_Python:字符串、列表、元组、字典
- 将两个(或多个)Item建立关联 app_field.set_dependent_field和app_field.clear_dependent_fields...
- 在mysql中创建视图需要使用什么语句_mysql如何创建视图?创建语句是什么?
- jmeter访问网址
- Python开发微信公众号
- matlab命令窗口是什么,MATLAB命令窗口
- Android开发技术周报 Issue#8
- 在没有中介平台比如Paypal/支付宝前提下,如何说服客户先付款?--猜疑链带来的思考
- 关于解决主机和虚拟机ping不通的问题
- 路由器交换与配置综合实验(二)外网
- 本科毕业论文-软件开发类-《基于Android端开关控制系统的设计与实现》-论文模板
- 阿姆斯特朗数 python_用Python编程语言来实现阿姆斯特朗数的检查