Java reporting library for creating dynamic report designs at runtime

Overview

Master

Build Status codecov

Development

Build Status codecov

Dynamic Reports

DynamicReports is an open source Java reporting library based on JasperReports. It allows to create dynamic report designs and it doesn't need a visual report designer. You can very quickly create reports and produce documents that can be displayed, printed or exported into many popular formats such as PDF, Excel, Word and others.
The original source code was first hosted on sourceforge and interactions were carried out through [dynamicreports.org]. After using this project and libraries, we the maintainers felt compelled to support the development for it has been a great tool. However the source code has not been easily accessible and the original hosting website on which this project was first created is no longer responsive and we do not want to see a great project go down and disappear like that.

Project Goals

This project aims to maintain the original source code of the same using familiar tools, like maven in a way that is accessible to allow contributions. It is based on version 5.1.0 of dynamic reports and Jasper Reports version 6.5.1. We are not trying to rewrite the whole thing, but rather to enhance that which is a already a great work. These are the main goals of the project

  • Make the source code easily accessible and assessable
  • Enhance the build tools. Not to replace maven, but to make it possible to rebuild the project and all artifacts from a local machine
  • Upgrade dependencies. The project works, but could still have more features, one was to include latest open source tools available
  • In order to support the former, we need to first increase out test coverage to make sure nothing breaks
  • Create a wiki with comprehensive explanations and illustrations on the usage of the library
  • Enhance the documentation in the source code that would make the user clear on what the library is trying to do

Documentation

See Readthedocs

Project Dependencies

A few tools merit to be mentioned:

  • Versioning : git
  • Build Tool : maven
  • CI : Travis (yet to fully setup)
  • Java version 8
  • Code style: google. Enforced by checkstyle. (Setting that up too)
  • Documentation Hosting: readthedocs.org

Contributing

See CONTRIBUTING

Raising Issues or bug reports

Before submitting a bug report see this checklist and be sure to follow this approach with as many details as possible. and fill out the issue template

Rules for Mergeable PRs

This is a young project and we would like it to continue to grow, and because of that, kindly be gentle and understanding when it seems like the maintainers are just making stuff up as they go:

  • The travis build must run successfully.
  • The PR must have test cases and must not reduce the code coverage (That needs to be setup)
  • The PR adheres to the template provided
  • Watch this space :)
Comments
  • Explanation of 5.1.0

    Explanation of 5.1.0 "Removed thread safety in JasperCustomValues due to problems with memory leak"

    Hi,

    Thank you very much for taking over the maintenance of this project!

    I have a question wrt. the changes vs 5.0.0 and 5.1.0, though. Change log says

    • removed thread safety in JasperCustomValues due to problems with memory leak

    Does anyone remember, or could explain in a few words, what change was made? I am currently trying to find a memory leak with 5.0.0 that JasperCustomValues / JRVerticalFiller / JRFillSubReport, and, based on that note in the changelog, wonder if the analysis had not already be done / a fix implemented?

    Thanks, -Stephane

    bug 
    opened by stephanebarbey 12
  • Documentations: Create wiki usage instructions and examples (and enhance javadocs)

    Documentations: Create wiki usage instructions and examples (and enhance javadocs)

    Expected Behavior

    The library ought to have examples and comprehensive usage illustrations. This will foster understanding of use cases and improve adoption of the library. This will also reduce instances of bug reports that could be "explained - away".

    Current Behavior

    The code in itself contains these examples. But illustrations might shed more light on expected behaviours, e.g. for a user who is not "coding - along". This should be set up in an accessible web page like the wiki pages. The code also contains minimal documentation which may require further explanations, as to what it is doing and how it should be used.

    Possible Solution

    Examples already exist, the contributors only need to set up explanation pages with the code and links to the code, taking care that each example is actually "runnable". The contributors are currently using "writethedocs.org" as a tool to power documentation, for the examples. Efforts to enhance the javadocs are also underway and continue to be updated in typical maintainance routines.

    Context

    The original author(s) had a web page set up to who usage, but the website is no longer accessible. The use of "writethedocs" tool is deemed really viable, and scalable and worth the effort. As for javadocs, it is important that the documentation is compatible with java version 11 javadoc tool, as java 8 will be no longer supported as from Jan 2019, and subsequent releases prior to java 11 are not LTS. They must also comply to HTML 5 standards, as HTML 4 is now deprecated.
    Contributors will here be forced, to use java version 11, for local development purposes, and use the "source" profile, or define a "JAVA_11_HOME" environment variable for use with source-11, soon to be included in the parent pom. The later may allow a user to use alternative jdk for other purposes like compilation and packaging without affecting the build
    Kindly note however the documentation of the examples and making them publicly available remain a priority issue where documentation is concerned in general.

    help wanted 
    opened by ghacupha 11
  • Make the project buildable

    Make the project buildable

    In the moment the parent pom is not part of this project. But it influences all the major used libraries.

    i think it might be a good idea as a first step to rebuild the parent pom so that all part can be build locally using standard maven

    opened by jan-moxter 10
  • bug export to pdf, does not print all the contents of the column

    bug export to pdf, does not print all the contents of the column

    Good morning,

    if I print a grid with a single column of fixed size containing the text "aaaaaaaaaaa bbbbbbbbbbbbb vvvvvvvvvvvvvvv ffffffff gggdfgegtrtyueee", the portion of text "gggdfgegtrtyueee" is not printed in the pdf file. If I use the show command instead, the text is printed correctly.

    Example:

    import static net.sf.dynamicreports.report.builder.DynamicReports.*; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map;

    import net.sf.dynamicreports.jasper.builder.JasperReportBuilder; import net.sf.dynamicreports.report.builder.style.FontBuilder; import net.sf.dynamicreports.report.constant.LineStyle; import net.sf.dynamicreports.report.exception.DRException; import net.sf.jasperreports.engine.data.JRMapCollectionDataSource; //import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; public class BugFixedColumnWidth {

    public BugFixedColumnWidth() {
    	build();
    }
    private void build() {
    	try {
    		Collection<Map<String, ?>> datasource = new ArrayList<Map<String,?>>();
            
    	  	HashMap<String,List<String>> data = new HashMap<String,List<String>>();
    	  	List<String> comments = new ArrayList<String>();
    	  	comments.add("aaaaaaaaaaa  bbbbbbbbbbbbb vvvvvvvvvvvvvvv ffffffff gggdfgegtrtyueee");
    	  	data.put("comments",comments);
    	  	datasource.add(data);
            
    	  	FontBuilder fontColumn= stl.font();
    		fontColumn.setFontName("Serif");
    		fontColumn.setFontSize(6);
    		
    		OutputStream output=null;
    		try {
    			output = new FileOutputStream("test.pdf");
    		} catch (FileNotFoundException e1) {
    			e1.printStackTrace();
    		}
    		
    		JasperReportBuilder report =report()
    		  .setColumnStyle(stl.style().setFont(fontColumn).setBorder(stl.pen((float)0.1,LineStyle.SOLID)).setPadding(2))
    		  .columns(
    		  	col.column("Descrizione",  "comments", type.listType()).setFixedWidth(112))
    		  .setDataSource(new JRMapCollectionDataSource(datasource))
    		  .toPdf(output);
    	} catch (DRException e) {
    		e.printStackTrace();
    	}
    }
    public static void main(String[] args) {
    	new BugFixedColumnWidth();
    }
    

    }

    PDF OUTPUT: ( .toPdf(output) )

    immagine

    with the command .show () you get instead:

    PREVIEW OUTPUT: ( .show() )

    immagine

    Regards

    opened by maximspu 8
  • Upgrade JasperReports to 6.9.0

    Upgrade JasperReports to 6.9.0

    • Please check if the PR fulfills these requirements
    • [x] The commit message follows our guidelines
    • [x] Tests for the changes have been added (for bug fixes / features)
    • [x] Docs have been added / updated (for bug fixes / features)
    • What kind of change does this PR introduce? (Bug fix, feature, docs update, ...) Changes introduced since 6.8.0:

    JasperReports Library 6.9.0 Change Log

    • upgrade to Hibernate 5.4.1.Final;

    • new export configurations added for embedding fonts in DOCX and PPTX exports;

    • minor bug fixes and improvements;

    JasperReports Library 6.8.1 Change Log

    • minor bug fixes and improvements;
    • What is the current behavior? (You can also link to an open issue here) Jasper Reports version 6.8.0

    • What is the new behavior (if this is a feature change)? Jasper Reports version 6.9.0

    • Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?) No

    • Other information:

    opened by szymongajek 6
  • Add isBlankWhenNull property control

    Add isBlankWhenNull property control

    Hi!

    Currently JRs isBlankWhenNull value is hard coded in DR : setBlankWhenNull(true) in ComponentTransform.java and StyleTransform.java. It would be great to have the ability to control this value.

    Because of the hard coded behaviour numeric null values are written to excel output as empty strings. If the user want to add expression with arithmetic on these cells, the user gets #VALUE! errors/results from the expression. (SUM function does not care, but arithmetic operators do)

    Thank You!

    opened by EPluribusUnum 5
  • Add Code Coverage Service

    Add Code Coverage Service

    Expected Behavior

    Add a Code Coverage Service to the build

    Current Behavior

    No Code Coverage yet

    Possible Solution

    I would propose to use CodeCov. I do use it currently on other projects and i like it. It does work good with a maven build on Travis-CI.

    But I am open to other services :-)

    Context

    CodeCoverage does allow better development

    help wanted 
    opened by jan-moxter 5
  • Remove the old commons-lang dependency

    Remove the old commons-lang dependency

    • Please check if the PR fulfills these requirements
    • [x] The commit message follows our guidelines
    • [x] Tests for the changes have been added (for bug fixes / features)
    • [x] Docs have been added / updated (for bug fixes / features)
    • What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)

    Removes a dependency to an extra library

    • What is the current behavior? (You can also link to an open issue here)

    The code uses an outdated commons-lang dependency

    • What is the new behavior (if this is a feature change)?

    To depend on commons-lang3 and commons-text only.

    • Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)

    No

    • Other information:
    opened by iherasymenko 4
  • Deployment fails due to Javadoc

    Deployment fails due to Javadoc

    Your issue may already be reported! Please search on the issue track before creating one.

    Expected Behavior

    mvn release:prepare works

    Current Behavior

    fails to error during Javadoc creation

    Possible Solution

    mvn javadoc:javadoc => clean javadoc until passes

    Steps to Reproduce (for bugs)

    mvn javadoc:javadoc

    Context

    Your Environment

    openjdk8

    opened by jan-moxter 4
  • :racehorse: Enable thread safe rendering of cached reports

    :racehorse: Enable thread safe rendering of cached reports

    This commit is related to https://github.com/dynamicreports/dynamicreports/issues/26 By using JasperScriptletManager with two implementations in JasperCustomValues, a thread safe variant to manage the JasperScriptlet can be selected by setting a report property.

    • Please check if the PR fulfills these requirements
    • [x] The commit message follows our guidelines
    • [x] Tests for the changes have been added (for bug fixes / features)
    • [ ] Docs have been added / updated (for bug fixes / features)
    • What kind of change does this PR introduce? (Bug fix, feature, docs update, ...) New feature, performance improvement: By setting the report property JasperScriptletManager.USE_THREAD_SAFE_SCRIPLET_MANAGER_PROPERTY_KEY a cached report can be filled concurrently. This allows to use big and complex reports without compiling them for every fill request.

    • What is the current behavior? (You can also link to an open issue here) Concurrent filling of cached reports does not work, because the JasperScriptlet is changed in JasperCustomValues by concurrent fill threads.

    • What is the new behavior (if this is a feature change)? A thread safe variant of JasperScriptletManager is used in JasperCustomValues if the mentioned property has been set. This variant uses ThreadLocal to access the JasperScriptlet. Otherwise a simple default implementation is used that accesses the JasperScriptlet from a private member variable.

    • Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?) No.

    • Other information: none

    opened by sgrueter 4
  • Jasper version upgrade to 6.16.0

    Jasper version upgrade to 6.16.0

    • Please check if the PR fulfills these requirements
    • [x] The commit message follows our guidelines
    • [x] Tests for the changes have been added (for bug fixes / features)
    • [x] Docs have been added / updated (for bug fixes / features)
    • What kind of change does this PR introduce? (Bug fix, feature, docs update, ...) Upgrade to Jasper report version and junit library security update

    • What is the current behavior? (You can also link to an open issue here) Internal dependency library version upgrade

    • What is the new behavior (if this is a feature change)? Internal dependency library version upgrade

    • Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?) NO

    Other information: Change log updated.

    opened by srbala 3
  • Cannot use AbstractSimpleExpression on Crosstab component

    Cannot use AbstractSimpleExpression on Crosstab component

    Hi, I am trying to add conditional formatting to my crosstab. But the reportParameters that I receive as parameter on the evaluate method are always pointing to the last value. I was hoping that the values were updated to the ones that are going to be render on the crosstab.

    But when I tried to do the exact same thing with another components it works.

    public DynamicTest() {
    
        build();
    }
    
    private void build() {
    
        ConditionalStyleBuilder condition1 = stl.conditionalStyle(new ConditionExpression())
                                                .setBackgroundColor(new Color(255, 210, 210));
        StyleBuilder unitpriceStyle = stl.style().conditionalStyles(condition1);
    
        CrosstabRowGroupBuilder<String> rowGroup = ctab.rowGroup("state", String.class)
                                                       .setTotalHeader("Total for state");
    
        CrosstabColumnGroupBuilder<String> columnGroup = ctab.columnGroup("item", String.class)
                                                             .setHeaderStyle(unitpriceStyle);
    
        CrosstabBuilder crosstab = ctab.crosstab()
                                       .rowGroups(rowGroup)
                                       .columnGroups(columnGroup)
                                       .measures(ctab.measure("Unit price",
                                                              "unitprice",
                                                              Integer.class,
                                                              Calculation.SUM));
    
        try {
            report().setPageFormat(PageType.A4, PageOrientation.LANDSCAPE)
                    .summary(crosstab)
                    .setDataSource(createDataSource())
                    .show();
        } catch (DRException e) {
            e.printStackTrace();
        }
    }
    
    private JRDataSource createDataSource() {
    
        DRDataSource dataSource = new DRDataSource("state", "item", "quantity", "unitprice");
        dataSource.add("New York", "Notebook", 1, 500);
        dataSource.add("New York", "DVD", 5, 30);
        dataSource.add("New York", "DVD", 2, 45);
        dataSource.add("New York", "DVD", 4, 36);
        dataSource.add("New York", "DVD", 5, 41);
        dataSource.add("New York", "Book", 2, 11);
        dataSource.add("New York", "Book", 8, 9);
        dataSource.add("New York", "Book", 6, 14);
    
        dataSource.add("Washington", "Notebook", 1, 610);
        dataSource.add("Washington", "DVD", 4, 40);
        dataSource.add("Washington", "DVD", 6, 35);
        dataSource.add("Washington", "DVD", 3, 46);
        dataSource.add("Washington", "DVD", 2, 42);
        dataSource.add("Washington", "Book", 3, 12);
        dataSource.add("Washington", "Book", 9, 8);
        dataSource.add("Washington", "Book", 4, 14);
        dataSource.add("Washington", "Book", 5, 10);
    
        dataSource.add("Florida", "Notebook", 1, 460);
        dataSource.add("Florida", "DVD", 3, 49);
        dataSource.add("Florida", "DVD", 4, 32);
        dataSource.add("Florida", "DVD", 2, 47);
        dataSource.add("Florida", "Book", 4, 11);
        dataSource.add("Florida", "Book", 8, 6);
        dataSource.add("Florida", "Book", 6, 16);
        dataSource.add("Florida", "Book", 3, 18);
        return dataSource;
    }
    
    public static void main(String[] args) {
    
        new DynamicTest();
    }
    
    private class ConditionExpression extends AbstractSimpleExpression<Boolean> {
    
        private static final long serialVersionUID = 1L;
    
        @Override
        public Boolean evaluate(ReportParameters reportParameters) {
    
            Integer unitprice = reportParameters.getValue("unitprice");
            return unitprice > 100;
        }
    }
    
    private void buildDate() {
    
        TextColumnBuilder<String> itemColumn = col.column("Item", "item", type.stringType());
        TextColumnBuilder<Date> orderDateColumn = col.column("Order date", "orderdate", type.dateType());
        TextColumnBuilder<Integer> quantityColumn = col.column("Quantity", "quantity", type.integerType());
        TextColumnBuilder<BigDecimal> unitPriceColumn = col.column("Unit price", "unitprice", type.bigDecimalType());
    
        ConditionalStyleBuilder condition1 = stl.conditionalStyle(new QuantityConditionExpression())
                                                .setBackgroundColor(new Color(255, 210, 210));
    
        StyleBuilder quantityStyle = stl.style().conditionalStyles(condition1);
        quantityColumn.setStyle(quantityStyle);
    
        try {
            report().columns(itemColumn, orderDateColumn, quantityColumn, unitPriceColumn)
                    .setDataSource(createDataSourceDate())
                    .show();
        } catch (DRException e) {
            e.printStackTrace();
        }
    }
    
    private JRDataSource createDataSourceDate() {
    
        DRDataSource dataSource = new DRDataSource("item", "orderdate", "quantity", "unitprice");
        dataSource.add("DVD", toDate(2010, 1, 1), 5, new BigDecimal(30));
        dataSource.add("DVD", toDate(2010, 1, 3), 1, new BigDecimal(28));
        dataSource.add("DVD", toDate(2010, 1, 19), 5, new BigDecimal(32));
        dataSource.add("Book", toDate(2010, 1, 5), 3, new BigDecimal(11));
        dataSource.add("Book", toDate(2010, 1, 11), 1, new BigDecimal(15));
        dataSource.add("Book", toDate(2010, 1, 15), 5, new BigDecimal(10));
        dataSource.add("Book", toDate(2010, 1, 20), 8, new BigDecimal(9));
        return dataSource;
    }
    
    private Date toDate(int year, int month, int day) {
    
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month - 1);
        c.set(Calendar.DAY_OF_MONTH, day);
        return c.getTime();
    }
    
    private class QuantityConditionExpression extends AbstractSimpleExpression<Boolean> {
    
        private static final long serialVersionUID = 1L;
    
        @Override
        public Boolean evaluate(ReportParameters reportParameters) {
    
            Integer quantity = reportParameters.getValue("quantity");
            return quantity > 3;
        }
    }
    

    When using the buildDate method it works. Am I doing something wrong or it is a problem with the crosstab component?

    Thanks, Fábio Dias.

    opened by fddias87 0
  • How does v4.1.0 load fonts?

    How does v4.1.0 load fonts?

    So I've inherited an old application that is using v4.1.0. Yes, I know it's really old but right now the priority is to get off of Oracle JDK 1.8 to OpenJDK 1.8 to avoid the Oracle license issues.

    We tried just updating the JAVA_HOME when starting the application but when a report is generated we're getting an exception that says:

    java.io.IOException: Problem reading font data.

    I've been reading about the dynamicreports-defaults.xml file but it has this:

    <?xml version="1.0" encoding="UTF-8"?>
    <DynamicReports>
      <!-- DEFAULT FONT -->
      <!-- <font fontName="Calibri" fontSize="15" pdfFontName="Helvetica" pdfEncoding="Cp1252" pdfEmbedded="false"/> -->
     <!--  <font fontName="Arial" fontSize="13" pdfFontName="Helvetica" pdfEncoding="Cp1252" pdfEmbedded="false"/> -->
      <font fontSize="13"/>
           
      <!-- DEFAULT DATA TYPES -->
      <bigDecimalType pattern="#,##0.00#" horizontalAlignment="RIGHT"/>
      <dateType pattern="MM/dd/yyyy" horizontalAlignment="RIGHT"/>
    </DynamicReports>
    

    So there are no explicit fonts being configured. So my question is what fonts are loaded from the JAVA_HOME path by default so that I can locate them in the Oracle JDK installation and copy them to the OpenJDK installation and get this working again.

    opened by jwhance 0
  • support for Tooltip without Hyperlink

    support for Tooltip without Hyperlink

    Most pdf viewers already support tooltips: https://gitlab.freedesktop.org/poppler/poppler/-/issues/34

    Though with DynamicReports I can only use a workaround via hyperlinks:

       public ComponentBuilder<?, ?> getValue(final String name, final String value) {
            final TextFieldBuilder<String> nameCmp = DocumentReports.cmp.text(name + ":").setFixedWidth(nameWidth);
            if (tooltip != null) {
                final String tooltipAdj = newTooltipString(tooltip);
                nameCmp.setHyperLink(DocumentReports.hyperLink(tooltipAdj).setTooltip(tooltipAdj));
            }
            final TextFieldBuilder<String> valueCmp = DocumentReports.cmp.text(value).setFixedWidth(valueWidth);
            return DocumentReports.cmp.horizontalList(nameCmp, valueCmp);
        }
    
        public static String newTooltipString(final String tooltip) {
            //some characters break tooltips from working in pdfs
            return "-> " + Strings.stripNonPrintableAscii(Currencies.replaceCurrencySymbolsWithCurrencyCode(
                    tooltip.replace(":", "_").replace(PercentScale.PERMILLE.getSymbol(), "permille")));
        }
    

    Though this does not work well with evince, because it fails to show the tooltip from a broken hyperlink. (but one can copy the hyperlink address to read the tooltip with the above workaround). It works in Adobe Acrobat Reader, Foxit Reader and Okular for example. It does not work for pdf reader inside Firefox and Chrome. Also older versions of Adobe Acrobat Reader trimmed the hyperlink tooltips, so only half of it can be read. Would there be a way to support direct tooltips (there seems to be a standardized \pdftooltip command)? I also found this regarding JasperReports where it seems to be possible to set hyperlink targets (but variations of this disable tooltips on all pdf readers): https://stackoverflow.com/questions/10734834/tooltip-for-text-titles-headers-in-ireports http://jasperreports.sourceforge.net/sample.reference/hyperlink/index.html#hyperlinks

    opened by subes 0
  • Sheet names in JasperXlsExporterBuilder with a

    Sheet names in JasperXlsExporterBuilder with a "/" in their name are not working for character encoding "UTF8"

    Expected Behavior

    When a String[] is passed to the JasperXlsExporterBuilder's method sheetNames() which contains a "/" in one String, the worksheet should be created with the name given in the array regardless of the backslash.

    Current Behavior

    The builder is set to .setCharacterEncoding("UTF8"), and when a String[] which contains a name with a "/" is passed to the method sheetNames(), then the worksheet name is cut of where the backslash was. If there are more then one worksheet this splitting causes the generated xls-file to contain not all of the desired worksheets. If there is a single worksheet provided then the name is cut of where the backslash was.

    My Solution -> Workaround

    I checked the passed names and replaced each "/" with "|".

    Steps to Reproduce (for bugs)

            final JasperXlsExporterBuilder xlsBuidler = DynamicReports.export.xlsExporter(os);
            xlsBuidler.setCharacterEncoding("UTF8")
                           .setIgnoreCellBackground(Boolean.FALSE)
                           .setIgnorePageMargins(Boolean.TRUE)
                           .setWhitePageBackground(Boolean.FALSE)
                           .setDetectCellType(Boolean.TRUE)
                           .sheetNames(sheetNames.toArray(new String[sheetNames.size()]))
    

    Your Environment

    • Version used: dynamicreports-core 6.11.1
    • Java version being used: Java 11
    • Operating System and version (desktop or mobile): Windows 10, Intellij Ultimate 2021.1.3
    opened by ccstb 0
  • CustomGroupBuilder.headerWithSubtotal() doesn't work when exporting to Excel (toXlsx or toXls)

    CustomGroupBuilder.headerWithSubtotal() doesn't work when exporting to Excel (toXlsx or toXls)

    When exporting a report to Excel the grouping rows values are not printed when headerWithSubtotal() is set.

    This issue can be reproduced with net.sf.dynamicreports.examples.group.GroupHeaderWithSubtotalReport example

    Expected Behavior

    When exporting to Excel I expect to see the grouping row values as they are printed in the PDF

    image

    Current Behavior

    However when exporting to Excel (either toXlsx or toXls) the values are missed

    image

    Possible Solution

    Just as hint... In example GroupHeaderWithSubtotalReport if line 77 is edited by removing .headerWithSubtotal() as follows

    CustomGroupBuilder yearGroup = grp.group(new ExportReport.YearExpression()).groupByDataType();

    Then the grouping rows values are printed

    image

    Steps to Reproduce (for bugs)

    This can be reproduced just by replacing line 90 at GroupHeaderWithSubtotalReport

    .show();

    by

    .toXlsx(export.xlsxExporter("export.xlsx"));

    Context

    This bug makes it no posible to have the grouping rows values printed together with the subtotals in excel files.

    Your Environment

    • Version used: tested with 6.11.1 and 6.12.1
    • Java version being used: openjdk version "11.0.9" 2020-10-20
    • Operating System and version (desktop or mobile): macOS Big Sur 11.4
    opened by juan-diego 0
Releases(6.12.1)
Owner
Dynamic Reports
Dynamic Reports
Core Java Library + PDF/A, xtra and XML Worker

iText 5 is EOL, and has been replaced by iText 7. Only security fixes will be added Known Security Issues org.apache.santuario:xmlsec vul

iText 1.4k Jan 9, 2023
The Apache PDFBox library is an open source Java tool for working with PDF documents

Apache PDFBox The Apache PDFBox library is an open source Java tool for working with PDF documents. This project allows creation of new PDF documents,

The Apache Software Foundation 1.8k Dec 31, 2022
An HTML to PDF library for the JVM. Based on Flying Saucer and Apache PDF-BOX 2. With SVG image support. Now also with accessible PDF support (WCAG, Section 508, PDF/UA)!

OPEN HTML TO PDF OVERVIEW Open HTML to PDF is a pure-Java library for rendering arbitrary well-formed XML/XHTML (and even HTML5) using CSS 2.1 for lay

null 1.6k Dec 29, 2022
XML/XHTML and CSS 2.1 renderer in pure Java

Flying Saucer OVERVIEW Flying Saucer is a pure-Java library for rendering arbitrary well-formed XML (or XHTML) using CSS 2.1 for layout and formatting

null 1.8k Jan 2, 2023
Create different patterns and designs using your favorite programming language for this project.

Patterns project for Hacktoberfest Create different patterns and designs using your favourite programming language weather it be a square pattern, sta

Pulkit Handa 5 Oct 5, 2022
Java library for parsing report files from static code analysis.

Violations Lib This is a Java library for parsing report files like static code analysis. Example of supported reports are available here. A number of

Tomas Bjerre 127 Nov 23, 2022
Minecraft mod running on the TTCp engine to load modules written in JS at runtime - with runtime deobfuscation!

PolyFire ClickGUI opens with NUMROW_0 How to use: Run -jsmodules to initialize Navigate to your .minecraft folder Go to config/pf/modules/ Copy Exampl

Daniel H. 8 Nov 18, 2022
Open Liberty is a highly composable, fast to start, dynamic application server runtime environment

Summary A lightweight open framework for building fast and efficient cloud-native Java microservices: Open Liberty is fast to start up with low memory

Open Liberty Project 1k Dec 21, 2022
This is a Blog & Report System with Java, JSP, AJAX

Blog-Report-System-in-Java This is a Blog & Report System with Java, JSP, AJAX Java project based on JDBC, JSP, Java Servlet & Server Deployment Proje

Muhammad Asad 5 Feb 2, 2022
Sikuli's official repository on github. Ask questions or report bugs at http://launchpad.net/sikuli.

!!!This Sikuli X-1.0rc3 IS NO LONGER SUPPORTED !!! A new version of Sikuli(X) is available since 2013 as a follow up development GitHub repo: RaiMan/S

Sikuli Lab 1.7k Jan 3, 2023
Sauron, the all seeing eye! It is a service to generate automated reports and track migrations, changes and dependency versions for backend services also report on known CVE and security issues.

SAURON - VERSION AND DEPLOYMENT TRACKER DESCRIPTION Sauron, the all seeing eye! It is a service to generate automated reports and track migrations, ch

FREENOWTech 20 Oct 31, 2022
Utilities for latency measurement and reporting

LatencyUtils A latency stats tracking package The LatencyUtils package includes useful utilities for tracking latencies. Especially in common in-proce

null 440 Nov 14, 2022
SpringBoot service to pick up CAN messages retransmitted by CANBridge and extract certain values for reporting/monitoring/alerting via DataDog

SpringBoot service to pick up CAN messages retransmitted by CANBridge and extract certain values for reporting/monitoring/alerting via DataDog

Grumpy Cricket 2 Mar 12, 2022
High-level contextual steps in your tests for any reporting tool

Xteps High-level contextual steps in your tests for any reporting tool. License Maven Central Javadoc Xteps Xteps Allure Xteps ReportPortal How to use

Evgenii Plugatar 8 Dec 11, 2022
This mod gives the option to server admins to disable chat reporting, in a non-intrusive way

Simply No Report This mod gives the option to server admins to disable chat reporting, in a non-intrusive way. It is disabled by default to let everyo

Amber Bertucci 17 Aug 20, 2022
Sentry is cross-platform application monitoring, with a focus on error reporting.

Users and logs provide clues. Sentry provides answers. What's Sentry? Sentry is a developer-first error tracking and performance monitoring platform t

Sentry 33k Jan 9, 2023
A Java library for performing runtime interception of methods

Interceptify This library is designed to provide a convenient and simple means of performing runtime interception of Java methods/constructors. Usage

Oliver 4 Aug 17, 2022
cglib - Byte Code Generation Library is high level API to generate and transform Java byte code. It is used by AOP, testing, data access frameworks to generate dynamic proxy objects and intercept field access.

cglib Byte Code Generation Library is high level API to generate and transform JAVA byte code. It is used by AOP, testing, data access frameworks to g

Code Generation Library 4.5k Jan 8, 2023
A library for creating interactive console applications in Java

Text-IO Text-IO is a library for creating Java console applications. It can be used in applications that need to read interactive input from the user.

Beryx 295 Jan 5, 2023