You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用VB.NET将DataTable的LotNo文本列转换为另一个DataTable的条码列

将DataTable中LotNo列转换为条码并复制到新DataTable

需求说明

现有一个包含LotNo文本列的DataTable,需要将数据复制到新的DataTable中,同时把LotNo列的文本转换为Code128条码(使用NuGet安装的Zen.Barcode库)。

完整实现代码

Private Sub CopyDataTableWithBarcode()
    ' 初始化Code128条码生成器(带校验码)
    Dim barcode As Zen.Barcode.Code128BarcodeDraw = Zen.Barcode.BarcodeDrawFactory.Code128WithChecksum

    ' 模拟源DataTable(实际使用时替换为你的真实数据源)
    Dim OldDt As New DataTable()
    OldDt.Columns.Add("Item Name", GetType(String))
    OldDt.Columns.Add("Iwt", GetType(Decimal)) ' 根据实际数据类型调整
    OldDt.Columns.Add("LotNo", GetType(String))
    ' 添加测试数据
    OldDt.Rows.Add("产品A", 10.5, "LOT001")
    OldDt.Rows.Add("产品B", 20.3, "LOT002")

    ' 创建目标DataTable,注意LotNo列类型为Image以存储条码图片
    Dim NewDt As New DataTable()
    NewDt.Columns.Add("Item Name", GetType(String))
    NewDt.Columns.Add("Iwt", GetType(Decimal))
    NewDt.Columns.Add("LotNo", GetType(Image))

    ' 遍历源表行,复制数据并生成条码
    For Each sourcerow As DataRow In OldDt.Rows
        Dim destRow As DataRow = NewDt.NewRow()
        destRow("Item Name") = sourcerow("Item Name")
        destRow("Iwt") = sourcerow("Iwt")
        ' 将LotNo文本转换为条码图片,高度设为50
        destRow("LotNo") = barcode.Draw(sourcerow("LotNo").ToString(), 50)
        NewDt.Rows.Add(destRow)
    Next
End Sub

关键注意事项

  • 列类型匹配:目标DataTable的LotNo列必须设置为Image类型,因为barcode.Draw方法返回的是Image对象,无法直接存入文本列。
  • 数据源有效性:确保源表中LotNo列的值不为空或Null,否则可能生成无效条码。
  • 条码参数调整:Draw方法的第二个参数是条码高度,也可以通过重载方法指定宽度,例如Draw(sourcerow("LotNo").ToString(), 200, 50)。
  • 条码保存:如果需要将生成的条码保存为文件,可调用Image的Save方法:CType(destRow("LotNo"), Image).Save("D:\Barcodes\LOT001.png")

内容的提问来源于stack exchange,提问作者Nandan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 23:03:09