• 解决问题--在Excel中使用条码字体打印出的code128条码不能被识别


    在Excle中处理条码常用的有两种方式:

    1 使用条码字体

    2 使用Excel自带的控件" Microsoft BarCode 控件“

    对于使用条码字体,网上很多人说是大小的问题,经过实验,20~36都基本没问题。

    常用的条码有39码和code128。所以先安装了这两种字体,调整格式之后显示打印出来没有问题。但是使用扫描设备却都无法识别。

    后来寻找原因,网上的解释是在自己的原始数据前后加上”*“作为起始符和终止符才能被识别,后来经验证确实如此。然而问题是使用一般的设备扫描得到的数据不会自动清除”*“,对客户而言这很不友好。如果是专业的扫码枪,可以尝试设置省略39码的起止符。

    故转而使用code128,如果直接将原始数据放在excle中设置条码字体是不行的,需要对原始数据进行处理。csdn上有人用宏命令做了示例,经过实验确实可行。可是遇到个问题,如何在合适的实际对原始数据进行处理(宏用得不熟)。本来使用c#写的程序导出excle的,所以就把宏里的函数转到vb工程里封装了一个dll,使用c#直接调用,把处理过的数据放进excle即可。

    附上那位仁兄的vb源码:

     1 Public Class BarCodeHelper
     2     Public Function GetCode128B(ByVal STR As String) As String
     3         Dim result As String
     4         Dim checksum As Integer, i_tmp As Integer
     5         Dim checkCode As String '生成验证码
     6         checksum = 104
     7         For i = 1 To Len(STR) Step 1
     8             i_tmp = AscW(Mid(STR, i, 1))
     9             If i_tmp >= 32 Then
    10                 checksum = checksum + (i_tmp - 32) * i
    11             Else
    12                 checksum = checksum + (i_tmp + 64) * i
    13             End If
    14         Next
    15         checksum = checksum Mod 103
    16         If checksum < 95 Then
    17             checksum = checksum + 32
    18         Else
    19             checksum = checksum + 100
    20         End If
    21         checkCode = ChrW(checksum)
    22         result = ChrW(204) + STR + checkCode + ChrW(206)
    23         GetCode128B = result
    24     End Function
    25 
    26 End Class

    说明:其实还有转code128c和EAN128的,具体看资源:http://download.csdn.net/download/liqingle/6880253

  • 相关阅读:
    弹性计算双周刊 第24期
    【阿里云新品发布·周刊】第8期:数字化风暴已经来临!云+区块链,如何颠覆未来科技?
    洞见数据库前沿 阿里云数据库最强阵容 DTCC 2019 八大亮点抢先看
    开发者招聘节 | 2019阿里巴巴技术面试题分享(陆续放出)
    bzoj1856: [Scoi2010]字符串
    bzoj1257: [CQOI2007]余数之和sum
    bzoj1088: [SCOI2005]扫雷Mine
    noip2015 运输计划
    noip2015 子串
    noip2015 斗地主
  • 原文地址:https://www.cnblogs.com/MagicJie/p/3967279.html
Copyright © 2020-2023  润新知