生成条形码的解决方案

添加时间:2019-11-02 00:43:17

来源:

浏览:

我们目前的解决方案是用 .Net winform 开发的一个小程序,输入数据,然后操作 Excel ,将数据填充到 Excel 中去,然后直接通过程序打印 Excel。其中的条形码使用的是 Code 39 字体生成的,即 Sakura CD39 字体。条形码的内容也很简单,由数字"1234567890"和连字符"-"组成,所以用 Code 39 一直没有问题。 

现在,我们有国外的业务,需要产生一种新的条形码:  ]C11040000149:21003:30200 
这个条形码里面有中括号 "]" 和 冒号":" 还有字母 "C" 
我们尝试了以前的方法,都不能实现。 
1.最初想使用Code 39 ,但是它不能解析中括号 “]”,即不能对中括号进行编码 
2.到网上下载Code 128 ,code 128 好像可以解析上面的字符串,但是一直没有找到免费的。 
3.使用Excel 中的控件Microsoft Barcode Control 9.0。因为我们是通过Excel 打印条形码标签的,所以想通过这个来实现。最初是真的可以了,通过设置,他可以解析上面的字符串,但是同时产生了一个新的问题:打印的条形码标签的内容始终不变,始终显示最开始的数据,也就是说如果你想打印修改后的条形码数据,就得将Excel 关闭,重新打开Excel 后才可以打印新的数据,所以这个一直没有得到解决。 
4.想使用水晶报表,但是没有使用过,也不知道能不能产生条形码。 


应该从Microsoft Barcode Control 9.0突破,Microsoft Barcode Control绑定数据了吗?不应该用赋值,应该用绑定。

CODE128码是可以解决的,要用算法算出首尾加进的特殊字符
装上CODE128字体就可以了

如果是想用使用Excel 中的控件Microsoft Barcode Control 9.0,我个人也没有用过,帮不了楼主,我使用的是专业的条码打印软件BarTender 7.10 。我想操作Excel 去打印并不方便。


直接使用Code128码  ]C11040000149:21003:30200 虽然条形码可显示打印,但扫描枪是无法识别
算出来是下面这样
Ì]C11040000149:21003:30200eÎ

个人感觉用这个软件比较好,但不会配置
我直接用的bartender连接printer的

如果知道128码的编码规则那就自己写条码组件。
这是基类代码

Visual Basic code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Text.RegularExpressions
Imports System.Drawing.Imaging
 
Public MustInherit Class Barcode
    Inherits Control
    Private m_BarCode As String      '输入值
    Private m_LineWidth As Integer   '基准线宽度
 
    '临时中间变量
 
    Private m_DisPlayFont As Boolean   '是否显示条码数字
    Private m_Image As Image
 
    Public Overridable Property LineWidth() As Integer
        Get
            Return m_LineWidth
        End Get
        Set(ByVal value As Integer)
            If value > 0 AndAlso value <= 6 Then
                m_LineWidth = value
            End If
 
        End Set
    End Property
  
    Protected Function Check(ByVal Inptut As StringAs Boolean       '判断输入值是否符合规范
        Return Regex.IsMatch(m_BarCode, Inptut)                  '只能输入12或者13位数字
    End Function
    Public Overridable Property Value() As String
        Set(ByVal value As String)
            m_BarCode = value
            Me.Invalidate()            '设置值完毕后触发绘画事件
        End Set
        Get
            Return m_BarCode
        End Get
    End Property
    Public Overridable ReadOnly Property BarCode() As String    '返回条码数字
        Get
            Return String.Empty
 
        End Get
 
    End Property
 
    Public Property DisPlayFont() As Boolean
        Get
            Return m_DisPlayFont
        End Get
        Set(ByVal value As Boolean)
            m_DisPlayFont = value
            Me.Invalidate()
        End Set
    End Property
    Public ReadOnly Property Image() As Image
        Get
            SavePic()
            Return m_Image
            m_Image.Dispose()
        End Get
 
    End Property
 
    Public Sub New()
        m_LineWidth = 1
        m_DisPlayFont = True
        Me.Height = 85
    End Sub
    Protected Overridable Sub DrawPic(ByVal Graphic As Graphics)
 
    End Sub
 
    Protected Overridable Sub DrawText(ByVal Graphic As Graphics)
 
    End Sub
 
    Private Sub SavePic()       '生成图象以供打印
        m_Image = New Bitmap(Me.Width, Me.Height, PixelFormat.Format32bppArgb)
        Dim Graphic As Graphics = Graphics.FromImage(m_Image)
        Graphic.Clear(Color.White)
        DrawPic(Graphic)
        DrawText(Graphic)
    End Sub
 
End Class

这是EAN13码的具体实现

Visual Basic code?


打印的条形码标签的内容始终不变,始终显示最开始的数据,也就是说如果你想打印修改后的条形码数据,就得将Excel 关闭,重新打开Excel 后才可以打印新的数据,所以这个一直没有得到解决
让设定的控件值生效即可,很简单的.

使用了 excel 中的 vba 代码实现了。
那个 barcode 控件很搞笑,要在重新给新值时用 vba 代码改变一下 barcode控件的大小就可以使用新值生效了。如下面的代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    BarCodeCtrl1.Value = "]C110" & Cells(5, 5) & ":21" & Cells(12, 19) & ":30" & Cells(12, 18)
    BarCodeCtrl1.Height = 41
    BarCodeCtrl1.Width = 520
    BarCodeCtrl1.Refresh
    '改变height 或width值,打印结果才正确
    BarCodeCtrl1.Value = "]C110" & Cells(5, 5) & ":21" & Cells(12, 19) & ":30" & Cells(12, 18)
    BarCodeCtrl1.Height = 41.25
    BarCodeCtrl1.Width = 523.6
    BarCodeCtrl1.Refresh
    'Sheet2.PrintOut
End Sub


noet 自定义字段

相关内容

——
02

2019-11

求生成条形码的解决方案

我们目前的解决方案是用.Netwinform开发的一个小程序,输入数据,然后操作Excel,将数据填充到Excel中去,然后直接通过程序打印Excel。其中的条形码使用的是Code39字体生成的,即SakuraCD39字体。条形码的内容也很简单,由数字1234567890和连字符… [了解更多]

02

2019-11

生成条形码的解决方案

我们目前的解决方案是用.Netwinform开发的一个小程序,输入数据,然后操作Excel,将数据填充到Excel中去,然后直接通过程序打印Excel。其中的条形码使用的是Code39字体生成的,即SakuraCD39字体。条形码的内容也很简单,由数字1234567890和连字符… [了解更多]

 
上海骁唐智能科技有限公司是一家专业从事条码扫描器、条码打印机、标签耗材、数据采集等智能识别应用系统的高科技条码物联网企业。提供Datalogic得利捷、Mindeo民德、Newland新大陆、Honeywell霍尼韦尔等条码扫描器,数据采集器,条码打印机等条码设备及条码扫描器软件下载、条码打印机维修、条码管理系统。骁唐专注于新零售和智能制造等的发展,有自己独立的扫描器品牌同时也是众多国际知名自动识别设备厂商的战略合作伙伴。

地 址:中国(上海)自由贸易试验区临港新片区平港路883-885号1幢

邮政编码:201411

电 话:13761963296

邮 箱:847098433@qq.com

投诉邮 箱:info@xtvu.com