跳過到頁腳內容
使用IRONBARCODE

如何使用VB.NET在Crystal Reports中打印條碼

若要使用 VB .NET在 Crystal Reports 中列印條碼影像,請透過NuGet安裝IronBarcode ,使用 BarcodeWriter.CreateBarcode() 產生條碼影像,並將產生的二進位資料綁定到 Crystal Report 中的影像欄位。 這種方法消除了對字體的依賴性,並在幾分鐘內產生可掃描、可直接列印的條碼。

在 Crystal Reports 中新增條碼可以增強您的業務流程,使其更快、更準確——從追蹤庫存到產生詳細報告。 如果您曾經嘗試在.NET中使用基於字體的條碼,您就會知道,由於複雜的公式、有限的格式和印表機問題,使用起來有多麼棘手,令人沮喪。

現代條碼產生器 SDK(例如IronBarcode)讓建立和列印條碼變得簡單。 在本指南中,您將找到所需的一切:在 Visual Studio 中設定IronBarcode 、產生條碼以及直接在 Crystal Reports 中顯示它們。 到最後,您將能夠輕鬆製作出專業、可靠的條碼。

Crystal Reports中列印條碼的方法有哪些?

在 Crystal Reports 新增條碼主要有兩種方法:基於字型的方法和 SDK 解決方案。

基於字型的方法需要在字型資料夾中安裝特殊的條碼字型(True Type 字型),並使用公式或使用者函數庫 (UFL) 對資料進行編碼。 雖然這種方法有效,但它通常涉及複雜的編碼公式、有限的條碼格式支援(例如 Code 39 或資料矩陣),以及在不同印表機和系統上可能出現的字體渲染問題,正如微軟關於字體渲染的文檔中所討論的那樣。

基於 SDK 的解決方案提供了更可靠的替代方案。這些函式庫以程式設計方式產生條碼影像,具有更高的可靠性、更廣泛的格式支援和更簡便的實現方式。 IronBarcode正是這種現代方法的典範,它允許開發人員產生條碼影像,並透過標準資料庫欄位或 DataTable 物件整合到 Crystal Reports 中。 此方法確保在所有平台上呈現一致的效果,並消除使用.NET在 Crystal Report 中列印條碼時出現的字體依賴性問題。

Crystal Reports 中基於字型的條碼方法與基於 SDK 的條碼方法
因素 基於字體的方法 基於 SDK 的方法(IronBarcode)
設定複雜性 高階-需要安裝字型和編碼公式 低——單一NuGet套件安裝
條碼格式支持 有限公司(代碼 39,代碼 128) 支援 30 多種格式,包括 QR 碼、Data Matrix 格式、PDF417 格式等。
跨印表機一致性 不一致-取決於已安裝的字型。 一致的-基於影像的渲染
維護負擔 高字體必須由每台機器單獨管理。 低-透過NuGet更新進行管理
掃描可靠性 多變的 高IronBarcode產生已驗證影像

如何為.NET安裝IronBarcode ?

在 VB .NET專案中設定IronBarcode只需要極少的配置。 首先,透過NuGet套件管理器安裝庫,執行以下命令:

Install-Package BarCode
Install-Package BarCode
SHELL

或者,您可以使用 Visual Studio 中的套件管理器 UI 搜尋並安裝"BarCode"。 安裝完成後,在.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 中顯示它們遵循標準影像欄位程式:

  1. 開啟 Crystal Reports,建立一個新報表或開啟一個現有報表。
  2. 在欄位資源管理器中,以滑鼠右鍵按一下"資料庫欄位",然後選擇"資料庫專家"。

    如何在.NET的 Crystal Reports 中列印條碼:圖 1 - 資料庫專家視窗

  3. 連接到資料庫並選擇包含條碼圖像的表。
  4. 將條碼影像欄位拖曳到報表設計介面上。
  5. 根據需要調整欄位大小和位置

您的報表設計器應該與此類似:

如何在.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、列印表格或標籤範本中。

如何在.NET中透過 Crystal Reports 列印條碼:圖 3 - 使用 Crystal Reports Viewer 顯示產生的條碼

如何處理常見的條碼列印問題?

在使用.NET在 Crystal Reports 中實作條碼時,可能會出現一些問題。 以下故障排除提示針對最常見的問題:

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 的免費試用版,了解其使用.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 幫助克服這些問題。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我