用例一:此方法只支持Code 39标准的条形码字体,该规范不支持大写字母。并且相关数据在数据库查询结果出中,必须前后都添加*号,如:*SG44* ,这样才可以用手机扫描出SG44这个字符串。
用例二:示例仅供参考。
用例一
通过使用电子表格的特殊字体,将单元格内容显示为条形码,效果如下
实现步骤
1、安装字体:从网上下载条形码字体包,将字体包后解压添加到C:\Windows\Fonts 文件夹下,打开excel字体即可看到安装的条形码。如下:
注:由于浏览器访问资源显示的字体是引用Windows\Fonts下的字体,所以为了可以正常访问条形码资源,要确保访问的机器Windows\Fonts下已经安装了条形码的字体。
2.创建电子表格:
在Excel中登录服务,新建电子表格,将相应字段拖拽到单元格中,并使用Excel公式(="*"&D3&"*")在条形码字段前后添加“*”,并设置居中字体背景色等,如下:
3.设置条形码:
选中单元格,设置字体为条形码字体,并且相应增大字体大小。如下:
4.隐藏原本的条形码字段,发布报表查看如下:
注意:如果条形码无法正常显示,需要将字体包添加到 :\Smartbi_Insight\Tomcat\bin\Font-smartbi文件夹下,并重启应用服务器,这样创建好的条形码就可在smartbi中展示并使用。
如果需要导出PDF,服务器端一定需要添加对应的编码字体类型。
用例二
Code 128字体支持大小写,但是由于 Code 128需要计算校验码,因此不可以直接输入一个字符串就生成符合规范的条码。对应的介绍文档可参考网上的文档: http://www.cnblogs.com/ilookbo/p/4807112.html ,在数据库查询结果中,自动添加前缀和校验码及后缀。
效果如下:
实现步骤
1、安装字体:从网上下载条形码字体包,将字体包后解压添加到C:\Windows\Fonts 文件夹下,打开excel字体即可看到安装的条形码。如下:
2.创建电子表格:
在Excel中登录服务,新建电子表格,将相应字段拖拽到单元格中,并设置居中字体背景色等,如下:
3.设置条形码:
选中单元格,设置字体为条形码字体,并且相应增大字体大小。如下:
4.发布报表查看如下,设置服务器端宏代码:
function main(spreadsheetReport) { var list = spreadsheetReport.getSheetByName("Sheet1").getExpandedPositions("C3")//条形码字段所在单元格 var cells = spreadsheetReport.workbook.worksheets.get("Sheet1").cells; for (var i = 0; i < list.length; i++) { var pos = list[i]; var v = cells.get(pos.row, pos.column).value var check = 1; if (!v) continue; for (var j = 0; j < v.length(); j++) { var c = v.charCodeAt(j); if (c < 135) { c -= 32 } else { c -= 100 } check = (check + (j + 1) * c) % 103 } if (check < 95 && check > 0) { check += 32 } else if(check > 94) { check += 100 } v = String.fromCharCode(204) + v + String.fromCharCode(check) + String.fromCharCode(206) cells.get(pos.row, pos.column).value = v; } }
5、最终效果。
注意:如果条形码无法正常显示,需要将字体包添加到 :\Smartbi_Insight\Tomcat\bin\Font-smartbi文件夹下,并重启应用服务器,这样创建好的条形码就可在smartbi中展示并使用。
如果需要导出PDF,服务器端一定需要添加对应的编码字体类型。