在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