JasperReport开源报表功能强大,是我们WEB系统中做报表开发的一个强有力的工具,上手也比较简单。 我碰到的问题是进行报表输出时,在html网页中显示正常,但如果导出为Excel时,部分列不显示。 我用的报表设计工具不是iReport,而是官方推荐采用的Jaspersoft Studio。先看一下,设计视图: 出现的问题截图如下:Excel预览也正常:输出Ex...
今天看到一份需求,要求是导出
excel
,但是有一点是:要求根据各个角色导出不同的字段,原本想做成两个报
表,后来想想没有必要,后来上网搜索发现,原来属性
值
里面还有这个属性Print when expressiont,看到后开心啦
后来就摸索了,其
值
设置为:$P{test}.equals("123") 但是
问题
出来了,总是报Cannot cast from boolean to
iReport
http://www.j
asp
er
report
.net
iReport
是一个能够创建复杂
报表
的开源项目,它100%使用Java语言编写,是目前全球最为流行的开源
报表
设计器之一。
由于它丰富的图形界面,你能够很快的创建出任何一种你想要的
报表
。
以下是
iReport
一些比较突出的功能:
• 拖拽式,所见即所得的
报表
编辑器;
• 多样的向导来简化复杂的
报表
设计任
今天使用
ireport
做一个
报表
,做好之后居然不
显示
数据出来,把我郁闷到了。。。在网上搜了很久
发现出现最多的是由于字体格式没设置好或者是when no data设置成All Sections ,No Detail,结果发现都不是我没
显示
数据的原因
最后发现
时
由于JavaBean得数据字段和
ireport
的fields字段的首字母大小写没有对应上。。。。。。。。。。。
上篇写到用json数据源创建的子
报表
在主
报表
中
竟然不
显示
,原因是需要在主
报表
中
传递子
报表
的数据源。
先配置下Sub
report
的 Data Source Expression属性试一下:
new net.sf.j
asp
er
report
s.engine.JREmptyDataSource()
OK,果然
显示
出来了,数据是空的,因为我们就是给它配置的空数据源。
说明就是数据源的
问题
,那我们再考虑怎么把json的数据源传递过来就可以啦。
一个
报表
只能绑定一个数据源,那我们就把子
报表
的json.
如果你还不知道j
asp
er
report
和
ireport
,那你可以参考我的上一篇文章,或者谷歌百度一下。好了,废话少说,Let’s start,Go!
我的环境是
iReport
3.0+JDK6.0。
先看看效果。
1) 准备数据源,这里使用XML文件(使用UTF8编码)作为数据源。
xml v
er
sion="1.0" ...
int moneyDigitCount = CssdUtils.getSystemSetConfigByNameInt("moneyDigitCount", 4);
moneyDigitCount = 2;
DecimalFormat df = null;//用于调整页面数字
显示
问题
背景:
在JavaEE开发
中
,我们少不了做一些
报表
导出工作,但最苦恼的莫过于
报表
的设计,一个像素一个像素的调整给我们带来很多不便。今天一客户指出,我们系统
中
的其
中
一个模块导出
Excel
时
,一个字段占用了多个
列
,用客户的话说:你们不要把单元格合并了嘛,介个样子我们后期处理很麻烦的撒。
问题
描述:在背景
中
所指出的
问题
,其对象就是一普通的
报表
,客户所描述的意
<dependency>
<groupId>net.sf.j
asp
er
report
s</groupId>
<artifactId>j
asp
er
report
s</artifactId>
<v
er
sion>6.17.0</v
er
sion>
</dependency>
2. 配置J
asp
er
Report
在application.prop
er
ties文件
中
添加以下配置:
# J
asp
er
Report
配置
j
asp
er
report
.compile.on.first.use=true
j
asp
er
report
.cache.directory=./j
asp
er
report
_cache
3. 编写Controll
er
编写Controll
er
,使用J
asp
er
Report
生成
报表
并返回给前端。
@RestControll
er
public class
Report
Controll
er
{
@GetMapping("/
report
")
public void gen
er
at
eR
eport(HttpS
er
vletResponse response) throws Exception {
// 获取J
asp
er
Report
模板文件
InputStream j
asp
er
Stream = this.getClass().getResourceAsStream("/
report
s/
report
.j
asp
er
");
// 设置参数
Map<String, Object> params = new HashMap<>();
params.put("title", "
报表
标题");
// 获取数据源
List<
Report
Data> data = getData();
JRDataSource dataSource = new JRBeanCollectionDataSource(data);
// 编译J
asp
er
Report
模板文件
J
asp
er
Report
j
asp
er
Report
= J
asp
er
CompileManag
er
.compil
eR
eport(j
asp
er
Stream);
// 填充J
asp
er
Report
模板文件
J
asp
er
Print j
asp
er
Print = J
asp
er
FillManag
er
.fill
Report
(j
asp
er
Report
, params, dataSource);
// 导出
报表
response.setContentType("application/pdf");
response.setHead
er
("Content-Disposition", "inline; filename=
report
.pdf");
final OutputStream outputStream = response.getOutputStream();
J
asp
er
ExportManag
er
.export
Report
ToPdfStream(j
asp
er
Print, outputStream);
private List<
Report
Data> getData() {
// 获取数据源
// ...
4. 编写J
asp
er
Report
模板文件
在resources目录下创建
report
s目录,并在该目录下创建
report
.jrxml文件,编写J
asp
er
Report
模板文件。
5. 运行程序
运行程序,访问http://localhost:8080/
report
,即可生成
报表
并在浏览器
中
显示
。