<p style="color:rgb(51,51,51);font-family:Arial, sans-serif;">Recently, I added the Spudsoft Emitter (uk.co.spudsoft.birt.emitters.excel_0.8.0.<a data-ipb='nomediaparse' href='
https://bitbucket.org/yaytay/spudsoft-birt-excel-emitters/commits/201310230652'>201310230652</a>.jar) to generate XLSX output files in a project which uses BIRT 2.6.0.</p><p style="color:rgb(51,51,51);font-family:Arial, sans-serif;">One of the requirements was to produce huge Excel workbooks (with more than 65,000 rows) in XLSX format, and with the default settings of the emitter (with XSSF), we faced a lot of OutOfMemory issues.</p><p style="color:rgb(51,51,51);font-family:Arial, sans-serif;">As per the discussion in <a data-ipb='nomediaparse' href='
https://bitbucket.org/yaytay/spudsoft-birt-excel-emitters/issue/93'>https://bitbucket.org/yaytay/spudsoft-birt-excel-emitters/issue/93</a> , I added the ExcelEmitter.ExtractMode and ExcelEmitter.NoStyles and the rptdesign file looks like this:</p><p style="color:rgb(51,51,51);font-family:Arial, sans-serif;"> </p><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]<?xml version="1.0" encoding="UTF-8"?>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]<report xmlns="<a data-ipb='nomediaparse' href='
http://www.eclipse.org/birt/2005/design'>http://www.eclipse.org/birt/2005/design</a>" version="3.2.21" id="1"> [/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <property name="createdBy">Eclipse BIRT Designer Version 2.3.1.v20080911 Build <2.3.1.v20080917-1340></property>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <list-property name="userProperties">[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <structure>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <property name="name">ExcelEmitter.ExtractMode</property>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <property name="type">boolean</property>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] </structure>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <structure>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <property name="name">ExcelEmitter.NoStyles</property>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <property name="type">boolean</property>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] </structure>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <structure>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <property name="name">ExcelEmitter.DEBUG</property>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <property name="type">boolean</property>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] </structure>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] </list-property>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <property name="ExcelEmitter.ExtractMode">true</property>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <property name="ExcelEmitter.NoStyles">true</property>[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"] <property name="ExcelEmitter.DEBUG">true</property>[/font]</span></div><p style="color:rgb(51,51,51);font-family:Arial, sans-serif;"> </p><p style="color:rgb(51,51,51);font-family:Arial, sans-serif;">I have just added this user property definition at the beginning of my .rptdesign file.</p><p style="color:rgb(51,51,51);font-family:Arial, sans-serif;">There are no out-of-memory issues now. However, I am still unable to generate XLSX workbooks with these new user-properties, due to a NullPointerException:</p><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]SEVERE: An error happened while running the report. Cause:[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]java.lang.NullPointerException[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at uk.co.spudsoft.birt.emitters.excel.handlers.CellContentHandler.endCellContent(CellContentHandler.java:215)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at uk.co.spudsoft.birt.emitters.excel.handlers.AbstractRealTableCellHandler.interruptCell(AbstractRealTableCellHandler.java:140)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at uk.co.spudsoft.birt.emitters.excel.handlers.AbstractRealTableCellHandler.endCell(AbstractRealTableCellHandler.java:89)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at uk.co.spudsoft.birt.emitters.excel.ExcelEmitter.endCell(ExcelEmitter.java:378)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.emitter.CompositeContentEmitter.endCell(CompositeContentEmitter.java:146)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLTableLayoutEmitter.endCell(HTMLTableLayoutEmitter.java:721)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.emitter.ContentEmitterUtil.endContent(ContentEmitterUtil.java:114)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.buffer.DummyPageBuffer.endContainer(DummyPageBuffer.java:66)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.end(HTMLStackingLM.java:42)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:141)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLInlineStackingLM.resumeLayout(HTMLInlineStackingLM.java:111)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLInlineStackingLM.layoutNodes(HTMLInlineStackingLM.java:160)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.layoutChildren(HTMLStackingLM.java:26)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:140)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:70)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.layoutChildren(HTMLStackingLM.java:26)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLTableBandLM.layoutChildren(HTMLTableBandLM.java:67)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:140)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:70)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.layoutChildren(HTMLStackingLM.java:26)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLTableLM.layoutChildren(HTMLTableLM.java:132)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:140)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:70)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:90)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:99)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:172)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:75)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.service.ReportEngineService.runAndRenderReport(ReportEngineService.java:920)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.service.BirtViewerReportService.runAndRenderReport(BirtViewerReportService.java:973)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.service.actionhandler.BirtRunAndRenderActionHandler.__execute(BirtRunAndRenderActionHandler.java:76)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(AbstractBaseActionHandler.java:90)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.presentation.aggregation.layout.RunFragment.doService(RunFragment.java:120)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.presentation.aggregation.layout.FramesetFragment.service(FramesetFragment.java:86)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.servlet.ViewerServlet.__doGet(ViewerServlet.java:181)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:278)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:122)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)[/font]</span></div><div><span style="font-size:10px;">[font="'courier new', courier, monospace;"]at org.eclipse.birt.report.filter.ViewerFilter.doFilter(ViewerFilter.java:68)[/font]</span></div><p style="color:rgb(51,51,51);font-family:Arial, sans-serif;"> </p><p style="color:rgb(51,51,51);font-family:Arial, sans-serif;">Should I set any other user property?</p><p style="color:rgb(51,51,51);font-family:Arial, sans-serif;">I have already raised a ticket in the Spudsoft Emitter bitbucket repository: <a data-ipb='nomediaparse' href='
https://bitbucket.org/yaytay/spudsoft-birt-excel-emitters/issue/149/nullpointerexception-with'>https://bitbucket.org/yaytay/spudsoft-birt-excel-emitters/issue/149/nullpointerexception-with</a> . If anyone else has any suggestions, please do share them here. Thanks in advance! </p>