...
用例一:此方法只支持Code 39标准的条形码字体,该规范不支持大写字母。并且相关数据在数据库查询结果出中,必须前后都添加*号,如:*SG44* ,这样才可以用手机扫描出SG44这个字符串。
...
用例一
通过使用电子表格的特殊字体,将单元格内容显示为条形码,效果如下
...
选中单元格,设置字体为条形码字体,并且相应增大字体大小。如下:
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,服务器端一定需要添加对应的编码字体类型。