標籤:style blog http color io os 使用 ar for
在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 Then10 checksum = checksum + (i_tmp - 32) * i11 Else12 checksum = checksum + (i_tmp + 64) * i13 End If14 Next15 checksum = checksum Mod 10316 If checksum < 95 Then17 checksum = checksum + 3218 Else19 checksum = checksum + 10020 End If21 checkCode = ChrW(checksum)22 result = ChrW(204) + STR + checkCode + ChrW(206)23 GetCode128B = result24 End Function25 26 End Class
說明:其實還有轉code128c和EAN128的,具體看資源:http://download.csdn.net/download/liqingle/6880253
解決問題--在Excel中使用條碼字型列印出的code128條碼不能被識別