Remove grid lines completely from excel jasperreports

Jasperreports version - 4.5.0
Apache poi version - 3.7

Jasperreports uses apache poi for xls report generation but for xlsx report generation it uses its own ooxml implementation so you have to modify both of these libraries to remove excel grid lines completely.

For XLS - Line 744, File location - poi-3.7-src/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
   HSSFSheet sheet = new HSSFSheet(this);
+ sheet.setDisplayGridlines(false);


For XLSX - Line 97, File location - jasperreports-4.5.0/src/net/sf/jasperreports/engine/export/ooxml/XlsxSheetHelper.java
- write("<sheetPr><outlinePr summaryBelow=\"0\"/></sheetPr><dimension ref=\"A1\"/><sheetViews><sheetView workbookViewId=\"0\"");
+ write("<sheetPr><outlinePr summaryBelow=\"0\"/></sheetPr><dimension ref=\"A1\"/><sheetViews><sheetView workbookViewId=\"0\" showGridLines=\"false\"");
Read More

Report design not valid

If content of a section doesn't fit in a page then following exception is thrown by jasperreports design validator. There are many ways to get rid of this exception.

  1. Increase your report's page height. But if you are not sure about subreport's height then this option might not work for you.
  2. If you are using dynamic reports (Wrapper around jasperreports) and suppose you are adding subreport in summary section then specifying summary split type to IMMEDIATE will solve the problem.
JasperReportBuilder reportBuilder = report().setSummarySplitType(SplitType.IMMEDIATE);

net.sf.dynamicreports.jasper.transformation.ComponentTransform$SubreportExpression evaluate
SEVERE: Error encountered while creating subreport design
net.sf.jasperreports.engine.design.JRValidationException: Report design not valid :
1. The summary section and the margins do not fit the page height.
at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:258)
at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:140)
at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:212)
at net.sf.dynamicreports.jasper.transformation.ComponentTransform$SubreportExpression.evaluate(ComponentTransform.java:473)
at net.sf.dynamicreports.jasper.base.JasperScriptlet.getValue(JasperScriptlet.java:56)
at net.sf.dynamicreports.jasper.base.JasperCustomValues.getValue(JasperCustomValues.java:112)
at Report_1335085550494_722509.evaluate(Report_1335085550494_722509:202)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:190)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559)
at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:876)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:284)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:347)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:275)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:257)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:473)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummaryNoLastFooterSamePage(JRVerticalFiller.java:1067)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummary(JRVerticalFiller.java:1032)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportEnd(JRVerticalFiller.java:296)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:135)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:765)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
Read More