如何使用VB.NET在Crystal Reports中打印條碼
若要使用 VB.NET 在 Crystal Reports 中列印條碼映像,請透過 NuGet 安裝 IronBarcode,使用 BarcodeWriter.CreateBarcode() 產生條碼映像,並將產生的二進位資料綁定到 Crystal Report 中的映像欄位。 這種方法消除了對字體的依賴性,並在幾分鐘內產生可掃描、可直接列印的條碼。
在 Crystal Reports 中新增條碼可以增強您的業務流程,使其更快、更準確——從追蹤庫存到產生詳細報告。 如果您曾經嘗試在 VB.NET 中使用基於字體的條碼,您就會知道它有多麼棘手,複雜的公式、有限的格式和印表機問題可能會讓人感到沮喪。
現代條碼產生器 SDK(例如IronBarcode)讓建立和列印條碼變得簡單。 在本指南中,您將找到所需的一切:在 Visual Studio 中設定 IronBarcode、產生條碼以及直接在 Crystal Reports 中顯示它們。 到最後,您將能夠輕鬆製作出專業、可靠的條碼。
Crystal Reports中列印條碼的方法有哪些?
在 Crystal Reports 新增條碼主要有兩種方法:基於字型的方法和 SDK 解決方案。
基於字型的方法需要在字型資料夾中安裝特殊的條碼字型(True Type 字型),並使用公式或使用者函數庫 (UFL) 對資料進行編碼。 雖然這種方法有效,但它通常涉及複雜的編碼公式、有限的條碼格式支援(例如 Code 39 或資料矩陣),以及在不同印表機和系統上可能出現的字體渲染問題,正如微軟關於字體渲染的文檔中所討論的那樣。
基於 SDK 的解決方案提供了更可靠的替代方案。這些函式庫以程式設計方式產生條碼影像,具有更高的可靠性、更廣泛的格式支援和更簡便的實現方式。 IronBarcode正是這種現代方法的典範,它允許開發人員產生條碼影像,並透過標準資料庫欄位或 DataTable 物件整合到 Crystal Reports 中。 此方法可確保在所有平台上呈現一致的效果,並消除使用 VB.NET 在 Crystal Report 中列印條碼時出現的字體依賴性問題。
| 因素 | 基於字體的方法 | 基於 SDK 的方法(IronBarcode) |
|---|---|---|
| 設定複雜性 | 高階-需要安裝字型和編碼公式 | 低——單一 NuGet 套件安裝 |
| 條碼格式支援 | 有限公司(代碼 39,代碼 128) | 支援 30 多種格式,包括 QR 碼、Data Matrix 格式、PDF417 格式等。 |
| 跨印表機一致性 | 不一致-取決於已安裝的字型。 | 一致的-基於影像的渲染 |
| 維護負擔 | 高字體必須由每台機器單獨管理。 | 低——透過 NuGet 更新進行管理 |
| 掃描可靠性 | 多變的 | 高——IronBarcode產生已驗證影像 |
如何在VB.NET安裝IronBarcode?
在 VB.NET 專案中設定 IronBarcode 只需要極少的配置。 首先,透過 NuGet 套件管理器安裝庫,執行以下命令:
Install-Package BarCode
Install-Package BarCode
或者,您可以使用 Visual Studio 中的套件管理器 UI 搜尋並安裝"BarCode"。 安裝完成後,在VB.NET程式碼中匯入命名空間:
Imports IronBarCode
確保您的專案是針對 .NET Framework 4.6.2 或更高版本,或任何版本的 .NET Core、.NET 5 或 .NET 6+。 IronBarcode 可與所有支援影像欄位的 Crystal Reports 版本搭配使用,因此與現有專案具有廣泛的相容性。 有關詳細的設定說明,請參閱IronBarcode 入門指南。
立即下載 IronBarcode,開始在 Crystal Reports 中建立專業條碼。
IronBarcode 支援哪些 .NET 版本?
IronBarcode 可相容於多種 .NET 執行時間環境:
- .NET Framework 4.6.2 及更高版本
- .NET Core 3.1+
- .NET 5、6、7、8 和 9
- .NET Standard 2.0+
這種廣泛的兼容性意味著您可以將 IronBarcode 整合到運行在 .NET Framework 上的舊版 VB.NET 應用程式中,就像整合到以 .NET 8 或更高版本的現代應用程式一樣容易。 請查看IronBarcode 相容性文件以取得完整的支援清單。
如何產生條碼並將其儲存在資料庫中?
使用 IronBarcode 建立條碼並將其儲存到 Crystal Reports 中,需要產生條碼影像,並使用 SqlConnection 或 OleDbConnection 將其儲存到資料庫中。 以下是一個完整的範例:
方案一:使用 SQL 資料庫
Imports IronBarCode
Imports System.Data.SqlClient
Module BarcodeGenerator
Sub CreateAndStoreBarcode()
' Generate a Code128 barcode
Dim myBarcode = BarcodeWriter.CreateBarcode("PROD-12345", BarcodeWriterEncoding.Code128)
' Add readable text below the barcode
myBarcode.AddBarcodeValueTextBelowBarcode()
' Resize to appropriate dimensions
myBarcode.ResizeTo(400, 150)
' Connect to your database
Using connection As New SqlConnection("YourConnectionString")
Dim cmd As New SqlCommand(
"INSERT INTO Products (ProductCode, BarcodeImage) VALUES (@Code, @Image)",
connection)
cmd.Parameters.AddWithValue("@Code", "PROD-12345")
cmd.Parameters.AddWithValue("@Image", myBarcode.BinaryStream)
connection.Open()
cmd.ExecuteNonQuery()
End Using
End Sub
End Module
此範例產生Code 128 條碼並將其作為二進位資料儲存在 SQL Server 中。 AddBarcodeValueTextBelowBarcode() 方法在條碼符號下方添加人類可讀的文本,使其既可用於掃描也可用於目視檢查。 ResizeTo() 方法會調整尺寸以適應您的報表版面。
選項 2:使用資料表
對於不需要持久性儲存的場景,DataTable 方法可以完全避免使用資料庫:
Imports IronBarCode
Imports System.Data
Function CreateBarcodeDataTable() As DataTable
Dim dt As New DataTable()
dt.Columns.Add("ProductCode", GetType(String))
dt.Columns.Add("Barcode", GetType(Byte()))
' Generate a barcode for each product
Dim row As DataRow = dt.NewRow()
row("ProductCode") = "PROD-12345"
Dim barcode = BarcodeWriter.CreateBarcode("PROD-12345", BarcodeWriterEncoding.Code128)
barcode.AddBarcodeValueTextBelowBarcode()
barcode.ResizeTo(400, 150)
row("Barcode") = barcode.BinaryStream
dt.Rows.Add(row)
Return dt
End Function
這種資料表方法非常適合報表預覽、一次性列印作業或資料庫基礎架構不可用的情況。 您可以遍歷產品列表,並為每個商品新增一行,按需產生條碼。 如需了解更多條碼格式,請瀏覽支援的條碼類型或IronBarcode 教學。
如何自訂條碼外觀?
除了簡單的生成功能外,IronBarcode 還提供多種自訂選項,這些選項在列印報表時非常有用:
-邊距-- 使用 myBarcode.SetMargins() 在條碼周圍加入空白,提高掃描可靠性
-顏色-- 更改品牌報告設計的前景和背景顏色
-註釋-- 使用 AddBarcodeValueTextAboveBarcode() 在條碼上方或下方新增自訂文本
-解析度-- 使用 myBarcode.SetDPI() 設定 DPI 以獲得高品質列印輸出
請參閱條碼自訂指南,其中包含涵蓋每種選項的程式碼範例。
如何在 Crystal Reports 中顯示條碼?
條碼儲存到資料庫後,在 Crystal Reports 中顯示它們遵循標準影像欄位程式:
- 開啟 Crystal Reports,建立一個新報表或開啟一個現有報表。
-
在欄位資源管理器中,以滑鼠右鍵按一下"資料庫欄位",然後選擇"資料庫專家"。
- 連接到資料庫並選擇包含條碼圖像的表。
- 將條碼影像欄位拖曳到報表設計介面上。
- 根據需要調整欄位大小和位置
您的報表設計器應該與此類似:
如何在 VB.NET 的 Crystal Reports 中列印條碼:圖 2 - 報表設計器佈局
若要在報表執行時動態產生條碼,請修改您的資料表或資料庫查詢,以便動態產生條碼。 以下範例展示如何將動態建立的 DataTable 綁定到 CrystalReportViewer:
Imports IronBarCode
Imports System.Data
Function GetReportData() As DataTable
Dim dt As New DataTable()
dt.Columns.Add("ProductCode", GetType(String))
dt.Columns.Add("Barcode", GetType(Byte()))
Dim row As DataRow = dt.NewRow()
row("ProductCode") = "CUSTOMER-12345"
Dim barcode = BarcodeWriter.CreateBarcode("CUSTOMER-12345", BarcodeWriterEncoding.Code128)
barcode.AddBarcodeValueTextBelowBarcode()
barcode.ResizeTo(400, 150)
row("Barcode") = barcode.BinaryStream
dt.Rows.Add(row)
Return dt
End Function
這種方法在報表載入時動態產生條碼,無需預先將影像儲存在資料庫中。 您可以使用 Crystal Reports 的內建匯出功能將報表匯出為 PDF 檔案。 有關 Crystal Reports 資料來源的更多信息,請參閱SAP 的 Crystal Reports 文件。
輸出
您的 Crystal Report 將顯示可讀取文字和正確尺寸的條碼。 依掃描器、印表機或標籤的需要調整欄位大小或邊距。 條碼可以直接從您的 VB.NET 應用程式新增至 PDF、列印表格或標籤範本中。
如何處理常見的條碼列印問題?
在使用 VB.NET 在 Crystal Reports 中實作條碼時,可能會出現一些問題。 以下故障排除提示針對最常見的問題:
| 問題 | 原因 | 解決方案 |
|---|---|---|
| 模糊的條碼 | 低影像解析度 | 使用ResizeTo()函數調整尺寸或設定較高的 DPI |
| 掃描失敗 | 靜音區不足 | 使用SetMargins()新增邊距;為程式碼 39 新增星號 |
| 資料庫連線錯誤 | 連接參數錯誤 | 驗證 OleDbConnection 或 SqlConnection 字串和資料集綁定 |
| 資料庫中的資料類型錯誤 | 欄位未設定為二進位類型 | 使用image或varbinary(max)列類型 |
| 條碼不顯示 | 權限或路徑問題 | 驗證 Crystal Reports 檢視器是否具有資料庫/資料表存取權限 |
| 缺少 DLL 錯誤 | 安裝不完整 | 透過 NuGet 重新安裝;驗證專案中是否引用了 IronBarcode DLL。 |
如需更多故障排除支持,請造訪IronBarcode 故障排除指南。 對於文件中未涵蓋的特定問題和特殊情況,您也可以造訪IronBarcode 支援論壇。
如何選擇合適的條碼格式?
選擇正確的條碼格式對掃描硬體的相容性和資料容量至關重要。 最常見的商業報告格式有:
- Code 128 -- 通用線性條碼; 高數據密度; 適用於大多數掃描器。 使用
BarcodeWriterEncoding.Code128。 -代碼 39 -- 舊標準; 得到廣泛支持; 對字母數字字元進行編碼。 使用BarcodeWriterEncoding.Code39。 -二維碼-- 二維條碼; 儲存大量數據,包括網址。 使用BarcodeWriterEncoding.QRCode。 -資料矩陣-- 緊湊型二維條碼; 在製造業和物流業中很常見。 使用BarcodeWriterEncoding.DataMatrix。 - PDF417 -- 高容量二維條碼; 用於製作貨運標籤和ID。 使用
BarcodeWriterEncoding.PDF417。
在為您的使用情境選擇合適的編碼時,請參考完整的支援的條碼格式清單。 若要讀取 Crystal Report 輸出影像中的條碼,請參閱條碼讀取器教學。
下一步計劃是什麼?
使用 VB.NET 和 IronBarcode 在 Crystal Reports 中實作條碼,為報表增強提供了一個可靠的解決方案。 這種基於 SDK 的方法消除了對字體的依賴,同時提供了廣泛的自訂選項。 無論使用資料庫或資料表,您都可以在 Crystal Reports 應用程式中實作專業條碼,包括資料矩陣、代碼 39 和二維碼。
若要繼續建立您的條碼工作流程:
下載 IronBarcode -- 取得免費試用版,立即開始產生條碼 -閱讀入門指南-.NET 專案的逐步設置 -探索條碼產生範例-- 所有常見用例的程式碼範例 -查看支援的格式-- 為您的應用程式找到合適的條碼類型 -查看條碼讀取教學課程—學習如何從 PDF 和圖像中讀取條碼 -存取許可頁面-- 比較個人和團隊使用方案
立即開始在您的專案中實施條碼,探索IronBarcode 的免費試用版,了解其使用 VB.NET 在 Crystal Reports 中列印條碼的全部功能。 SAP Crystal Reports SDK 的相關文件可在SAP 開發者入口網站上找到,其中包含更多整合模式。
常見問題解答
在 Crystal Reports 中使用 IronBarcode 與 VB.NET 有哪些好處?
在 Crystal Reports 中使用 IronBarcode 與 VB.NET 可以無縫集成條碼,增強業務流程,例如庫存跟踪和生成詳細報告。與基於字體的解決方案相比,它簡化了條碼生成。
IronBarcode 如何改善 Crystal Reports 中的條碼生成?
IronBarcode 提供了一個簡單直觀的 SDK,通過消除複雜的公式,並減少在 Crystal Reports 中的格式限制和打印機兼容性問題,提高了條碼生成。
IronBarcode 能否在 Crystal Reports 中處理不同的條碼格式?
是的,IronBarcode 支持廣泛的條碼格式,使其能在 Crystal Reports 中應用於各種場合,確保兼容性和可靠性。
將 IronBarcode 集成到 VB.NET 項目中是否困難?
不,將 IronBarcode 集成到 VB.NET 項目中設計為用戶友好,提供清晰的文檔和支持,使過程順利高效。
為什麼我應該選擇 IronBarcode 而不是基於字體的條碼解決方案?
IronBarcode 提供了比基於字體的條碼更強大和靈活的解決方案,避免了複雜的公式和打印機問題,並提供廣泛的格式支持和可靠性。
IronBarcode 是否支持直接從 Crystal Reports 打印條碼?
是的,IronBarcode 允許從 Crystal Reports 直接打印條碼,保證高質量輸出並減少其他方法通常與之相關的複雜性。
在 VB.NET 中基於字體的條碼常見問題是什麼?
基於字體的條碼通常涉及複雜的公式、有限的格式選項和打印機兼容性問題,IronBarcode 通過其綜合的 SDK 幫助克服這些問題。

