EAN-13 条形码

EAN-13 是国际通用的商品条形码标准,广泛应用于超市零售、物流仓储等领域。SpreadJS 支持通过公式快速生成 EAN-13 条形码,并可自定义附加码、标签位置等样式,满足商品管理和库存盘点等业务场景需求。

概述 本 Demo 展示了如何使用 BC_EAN13 公式在 SpreadJS 中生成 EAN-13 条形码。Demo 演示了三种不同的参数配置方式:默认参数、带附加码、以及同时设置附加码和标签位置,并展示了校验位验证的效果。 实现思路 初始化工作表,设置表格结构和数据(商品名称和编号) 为三个数据行设置 BC_EAN13 公式,分别使用不同的参数配置 第一列使用默认参数,只传入商品编号作为条码值 第二列设置附加码参数(addOn=22),在条码旁显示附加信息 第三列同时设置附加码和附加码标签位置(bottom),标签显示在底部 设置表格样式,包括列宽、行高、边框和对齐方式 代码解析 生成 EAN-13 条形码 Demo 使用 setFormula 方法为单元格设置 BC_EAN13 公式。公式引用 C 列的商品编号作为条码值。通过省略前面的参数(使用逗号占位),直接设置第 6 个参数 addOn 和第 7 个参数 addOnLabelPosition。 EAN-13 条码规则 EAN-13 条码要求 value 参数为 12 位或 13 位数字。如果是 12 位,系统会自动计算校验位作为第 13 位;如果是 13 位,系统会验证最后一位校验位是否正确。Demo 中的第三行数据校验位无效,因此无法生成条码。 运行效果 表格显示三行商品数据,每行商品编号对应三个不同配置的 EAN-13 条形码 第一列条形码使用默认设置,仅显示基本的条码和标签 第二列条形码添加了附加码 "22",显示在条码右侧 第三列条形码的附加码标签位置设置为 "bottom",附加码显示在条码底部 第三行数据无法生成条码,提示信息显示为红色 API 参考 BC_EAN13 函数 value:条形码编码数值,只能为数字类型且长度为 12 或 13 位 color:条码颜色,默认值为 'rgb(0,0,0)' backgroundColor:条码背景颜色,默认值为 'rgb(255, 255, 255)' showLabel:是否显示标签文本 labelPosition:标签显示位置 addOn:附加码数值,长度必须为 2 位或 5 位 addOnLabelPosition:附加码标签显示位置 其他参数:字体样式相关(fontFamily、fontStyle、fontWeight 等)和静默区设置(quietZone 系列参数)
window.onload = function () { var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), {sheetCount: 1}); initSpread(spread); }; function initSpread(spread) { var sheet = spread.getSheet(0); spread.suspendPaint(); _initBasicSheet(sheet); spread.resumePaint(); } function _initBasicSheet(sheet) { sheet.name('customSheet'); _setData(sheet); _setStyle(sheet); for (var row = 3; row < 6; row++) { sheet.setFormula(row, 3, '=BC_EAN13(C' + (row + 1) + ')'); sheet.setFormula(row, 4, '=BC_EAN13(C' + (row + 1) + ',,,,,22)'); sheet.setFormula(row, 5, '=BC_EAN13(C' + (row + 1) + ',,,,,22,"bottom")'); } sheet.setValue(5, 6, '未生成EAN-13条码,因为最后一位是校验位且无效'); } function _setData(sheet) { var pos = [1, 2, 6]; for (var i = 0; i < pos.length; i++) { sheet.addSpan(1, pos[i], 2, 1); } var dataArray = [ ['药品', 692031229621], ['笔', 6945091701532], [ '值长度为13', 8142486545683 // 'No EAN-13 generated, because the last digit is check-sum digit and it is invalid' ] ]; sheet.setArray(3, 1, dataArray); sheet.addSpan(1, 3, 1, 3); sheet.setValue(1, 1, '名称'); sheet.setValue(1, 2, '编号'); sheet.setValue(1, 3, 'EAN-13'); sheet.setValue(1, 6, '说明'); sheet.setValue(2, 3, '默认'); sheet.setValue(2, 4, '更改附加码'); sheet.setValue(2, 5, '更改附加码标签位置'); } function _setStyle(sheet) { sheet.setColumnWidth(0, 20); for (var row = 3; row < 6; row++) { sheet.setRowHeight(row, 100); } for (var col = 1; col < 7; col++) { sheet.setColumnWidth(col, 200); } sheet .getRange(1, 1, 2, 6) .foreColor('#000') .backColor('#FFF3CE') .setBorder(new GC.Spread.Sheets.LineBorder('orange', GC.Spread.Sheets.LineStyle.thin), {all: true}); sheet .getRange(1, 1, 5, 6) .vAlign(GC.Spread.Sheets.VerticalAlign.center) .hAlign(GC.Spread.Sheets.HorizontalAlign.center) .setBorder(new GC.Spread.Sheets.LineBorder('orange', GC.Spread.Sheets.LineStyle.medium), {outline: true}); sheet.getCell(5, 6).foreColor('red').wordWrap(true); }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta name="spreadjs culture" content="zh-cn" /> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets-barcode/dist/gc.spread.sheets.barcode.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets-resources-zh/dist/gc.spread.sheets.resources.zh.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div class="sample-tutorial"> <div id="ss" class="sample-tutorial"></div> </div> </body> </html>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }