解決問題--在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM