`
Luob.
  • 浏览: 1602152 次
  • 来自: 上海
社区版块
存档分类
最新评论

DynamicReports 简单使用

阅读更多
效果图


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
分享到:
评论

相关推荐

    dynamicreports

    例如,你可以创建一个简单的表格报表,通过`createTable()`方法定义表格,使用`addColumn()`添加列,然后使用`fillReport()`方法填充数据并生成报表。 在实际开发中,你可能需要结合Java的业务逻辑和数据处理,利用...

    java动态报表神器DynamicReports中文文档

    例如,使用`DynamicReports.col.column`方法可以创建一列,其中`"Item"`、`"Quantity"`和`"Unit price"`分别代表了报表中的标题,而`type.stringType()`和`type.integerType()`定义了对应列的数据类型。通过`type....

    Dynamicreports报表demo源码

    DynamicReports是一款基于Java的开源报表工具,它提供了一种简单、直观的方式来创建和设计复杂的报表。本资源包含了一份DynamicReports报表的演示源码,以及相关的jar包和文档,旨在帮助开发者快速理解和运用这个...

    dynamicreports demo

    1. **样例代码**:这些代码展示了如何使用DynamicReports API创建各种类型的报表,例如简单的表格、分组报表、交叉表、图表等。 2. **配置文件**:可能包含配置动态报表环境的XML或properties文件,用于指定数据源、...

    动态报表dynamicreports

    动态报表(Dynamic Reports)是一种基于Java的开源报表库,它为开发者提供了强大的工具来创建...通过学习和使用dynamicreports-3.0.4这个版本,你可以深入理解如何利用Java实现动态报表,从而提升你的报表开发技能。

    JavaDynamicReports:从MySQL或MS SQL生成Dynamic和JasperReport

    它允许开发人员使用简单的API来设计和生成报表,而无需深入理解JasperReport的底层复杂性。这个库是基于JasperReports库构建的,扩展了其功能,特别是在动态报表生成方面。 1. **JasperReports简介** ...

    java实现校园一卡通源码-Campus-Card-Consumption-System:基于S50卡的校园卡消费系统的上位机平台

    java代码基于Eclipse开发环境(切记使用JDK1.8以下的版本进行开发,我使用的是JDK1.7),数据库是SQL Server 2008,消费报表部分是利用的DynamicReports插件,这个动态报表需要添加一部分复杂的第三方包,在我的CSDN...

    JavaScript图表库

    FingerChart是一个轻量级的基于Flash技术开发的图表解决方案,它旨在提供一个简单的图表展示方式。未来,FingerChart计划扩展到HTML5。 7. Android图表工具库 AChartEngine是为Android应用设计的绘图工具库,支持...

Global site tag (gtag.js) - Google Analytics