效果图
public void export(@Valid PaymentChartQuery dto, HttpServletRequest request, HttpServletResponse response){
List<ColumnBuilder> colms=new ArrayList<>();
colms.add(col.reportRowNumberColumn("序号").setHorizontalTextAlignment(HorizontalTextAlignment.CENTER));
colms.add(col.column("销售单号","fsSellNo",type.stringType()));
colms.add(col.column("日期","fsSellDate",type.stringType()));
colms.add(col.column("结账时间","fsCheckEndTime",type.stringType()));
colms.add(col.column("付款金额","fdReceMoney",type.bigDecimalType()));
colms.add(col.column("付款方式","fsPaymentName",type.stringType()));
colms.add(col.column("班别","fsShiftName",type.stringType()));
colms.add(col.column("账单号","fsCheckBillNo",type.stringType()));
colms.add(col.column("收银员","fsCashier",type.stringType()));
colms.add(col.column("备注","fsNote",type.stringType()));
String filename= "付款明细表";
try {
filename = new String(filename.getBytes(), "iso8859-1");//解决中文 文件名问题
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-disposition", "attachment;filename="+filename+".xls");
//outstream
OutputStream outputStream = response.getOutputStream();
JasperXlsExporterBuilder xlsExporter = export.xlsExporter(outputStream).addSheetName("付款明细表")
.setDetectCellType(true).setIgnorePageMargins(true).setWhitePageBackground(false)
.setRemoveEmptySpaceBetweenColumns(true);
dto.setPrint(true);
Map<String,Object> map=paymentChartService.queryPaymentChart(dto);
List<PaymentChartDTO> list=(List)map.get(ResultCode.DATA);
List<PaymentChartTotalDTO> total= (List)map.get(ResultCode.TOTAL);
SubreportBuilder subreport1 = cmp.subreport(createTotal(total)).setFixedWidth(700);
JasperReportBuilder report=report();
report.setTemplate(Templates.reportTemplate)
.ignorePageWidth()
.title(cmp.horizontalList(subreport1),cmp.verticalGap(20))
.columns(colms.toArray(new ColumnBuilder[colms.size()]))
.setHighlightDetailEvenRows(true) //偶数行高亮显示
.highlightDetailEvenRows()
.setDataSource(list)
.toXls(xlsExporter);
outputStream.flush();
outputStream.close();
}catch (IOException e) {
e.printStackTrace();
}catch (DRException e) {
e.printStackTrace();
}
}
/**
* 合计
* @param list
* @return
*/
private JasperReportBuilder createTotal(List<PaymentChartTotalDTO> list){
JasperReportBuilder report = report();
PaymentChartTotalDTO total= list.remove(0); //总计:
List<ColumnBuilder> colms=new ArrayList<>();
TextColumnBuilder<String> fsPaymentName_col=col.column("付款方式","fsPaymentName",type.stringType()).setWidth(100);
TextColumnBuilder<BigDecimal> fdReceMoney_col=col.column("金额","fdReceMoney",type.bigDecimalType()).setWidth(100);
colms.add(col.reportRowNumberColumn("序号").setHorizontalTextAlignment(HorizontalTextAlignment.CENTER));
colms.add(fsPaymentName_col);
colms.add(fdReceMoney_col);
colms.add(col.percentageColumn("比例 %", fdReceMoney_col));
//饼图
PieChartBuilder pie_payment = cht.pieChart()
.setTitle("payment chart")
.setTitleFont(stl.fontArialBold())
.setKey(fsPaymentName_col).setShowLegend(false)
.series(cht.serie(fdReceMoney_col));
//列表
report.setTemplate(Templates.reportTemplate_2)
.columns(colms.toArray(new ColumnBuilder[colms.size()]))
.subtotalsAtSummary(sbt.text("合计:",fsPaymentName_col),sbt.sum(fdReceMoney_col))
.setDataSource(list);
SubreportBuilder subreport1 = cmp.subreport(report);
JasperReportBuilder report1=report();
report1.setTemplate(Templates.reportTemplate_2)
.summary(cmp.horizontalList(pie_payment,subreport1))
.setDataSource(list);
return report1;
}
- 大小: 106.2 KB
分享到:
相关推荐
例如,你可以创建一个简单的表格报表,通过`createTable()`方法定义表格,使用`addColumn()`添加列,然后使用`fillReport()`方法填充数据并生成报表。 在实际开发中,你可能需要结合Java的业务逻辑和数据处理,利用...
DynamicReports是一款基于Java的开源报表工具,它提供了一种简单、直观的方式来创建和设计复杂的报表。本资源包含了一份DynamicReports报表的演示源码,以及相关的jar包和文档,旨在帮助开发者快速理解和运用这个...
例如,使用`DynamicReports.col.column`方法可以创建一列,其中`"Item"`、`"Quantity"`和`"Unit price"`分别代表了报表中的标题,而`type.stringType()`和`type.integerType()`定义了对应列的数据类型。通过`type....
1. **样例代码**:这些代码展示了如何使用DynamicReports API创建各种类型的报表,例如简单的表格、分组报表、交叉表、图表等。 2. **配置文件**:可能包含配置动态报表环境的XML或properties文件,用于指定数据源、...
动态报表(Dynamic Reports)是一种基于Java的开源报表库,它为开发者提供了强大的工具来创建...通过学习和使用dynamicreports-3.0.4这个版本,你可以深入理解如何利用Java实现动态报表,从而提升你的报表开发技能。
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用