dataExporter and p:columns

UI Components for JSF
Post Reply
beckyo
Posts: 5
Joined: 16 Dec 2010, 18:53

20 Jan 2011, 20:46

Can you use the dataExporter if your p:dataTable uses p:columns NOT p:column? I am getting empty files for all(pdf,xls,csv and xml) Since all my tables come from a database, I don't really know the number of columns or labels for columns so I put them in an ArrayList<ArrayList<Strings>>, both labels and data see code below:

<h:commandLink>
<p:graphicImage value="/resources/css/styleImages/excel.png" />
<p:dataExporter type="xls" target="siteList" fileName="uvbNetwork" />
</h:commandLink>
<p>
<p:dataTable paginator="false" dynamic="true" rendered="#{!empty(networkSiteList.siteTable.uvbData)}" id="siteList"
value="#{networkSiteList.siteTable.uvbData}" var="oneRow" style="width:850px;overflow:auto;padding: 0px 1px 0px 1px;" >
<p:columns value="#{networkSiteList.siteTable.uvbDataLabels}" var="colLabs" columnIndexVar="ind" >
<f:facet name="header">
<h:outputText value="#{colLabs}" style="font-size: 108%;font-weight: bold;color:#00703e;"/>
</f:facet>
<h:outputText value="#{oneRow[ind]}" />
</p:columns>
</p:dataTable></p>

Is my dataTable confusing dataExporter? I am using Itext 1.4.8 and Poi 3.2 along with Tomcat 6.0, Myfaces 2.0 and templates.

Thanks
Becky

User avatar
pitutos
Posts: 52
Joined: 23 Jul 2010, 01:28

07 Sep 2011, 14:20

hi, same problem, any ideas?
NetBeans 7.1
Mojarra-2.1.7
PrimeFaces-3.0.1
Tomcat 7.0.22

cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

07 Sep 2011, 14:26

Not supported yet, there is a feature request in our tracker you can vote.

User avatar
pitutos
Posts: 52
Joined: 23 Jul 2010, 01:28

07 Sep 2011, 14:41

optimus.prime wrote:Not supported yet, there is a feature request in our tracker you can vote.
ok, thank you! :mrgreen:
NetBeans 7.1
Mojarra-2.1.7
PrimeFaces-3.0.1
Tomcat 7.0.22

User avatar
pitutos
Posts: 52
Joined: 23 Jul 2010, 01:28

08 Sep 2011, 16:38

This is my implementation for the solution.

Code: Select all

public void export(List<List<String>> data, List<String> columnsHeaders) {
        if (data.isEmpty()) {
            return;
        }
        int index = 0;
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("someName");
        HSSFRow row = sheet.createRow(index);
        for (int i = 0; i < columnsHeaders.size(); i ++) {
            HSSFCell cell = row.createCell(i);
            cell.setCellValue(new HSSFRichTextString(columnsHeaders.get(i)));
        }
        Iterator it = data.iterator();
        while (it.hasNext()) {
            index ++;
            row = sheet.createRow(index);
            List<String> rowData = (List<String>) it.next();
            for (int i = 0; i < rowData.size(); i ++) {
                HSSFCell cell = row.createCell(i);
                cell.setCellValue(new HSSFRichTextString(rowData.get(i)));
            }
        }       
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) FacesContext
        .getCurrentInstance().getExternalContext().getResponse();
        response.setHeader("Content-Disposition", "attachment;filename=someName.xls");
        response.setContentLength(workbook.getBytes().length);
        response.setContentType("application/vnd.ms-excel");
        try {
            response.getOutputStream().write(workbook.getBytes());
            response.getOutputStream().flush();
            response.getOutputStream().close();
            context.responseComplete();
        } catch (IOException ex) {
            // Do some
        }
    }
NetBeans 7.1
Mojarra-2.1.7
PrimeFaces-3.0.1
Tomcat 7.0.22

jrgamber
Posts: 13
Joined: 01 Dec 2016, 07:54

29 Jun 2021, 19:45

This problem has come back in release 10 of PrimeFaces. Exporting of p:columns was ok on pf 8 for this example.

Everything else on the table is perfect: sorting, filtering, pagination, etc..

<p:dataTable id="tbl" var="dataRow" value="#{bOMImportExportViewBean.bomDataList}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {Exporters}"
draggableColumns="true" draggableRows="true" rows="10"
paginator="true"
style="margin-bottom:20px; max-width: 90%; max-height: 90%;"
stripedRows="true" showGridlines="true">
<f:facet name="{Exporters}">
<h:commandLink>
<p:graphicImage style="float: right;" name="/images/csv.png" width="24"/>
<p:dataExporter type="csv" target="tbl" fileName="bomData"/>
</h:commandLink>

<h:commandLink>
<p:graphicImage style="float: right;" name="/images/xml.png" width="24"/>
<p:dataExporter type="xml" target="tbl" fileName="bomData" />
</h:commandLink>
</f:facet>
<f:facet name="header">
BOM Data (#{bOMImportExportViewBean.bomDataList.size()} Entries) for #{bOMImportExportViewBean.dbEWIBean.name.concat(" Version ".concat(bOMImportExportViewBean.dbEWIBean.version))}
</f:facet>
<p:columns var="col" value="#{bOMImportExportViewBean.bomColumnList}" columnIndexVar="colIndex" width="100"
sortBy="#{dataRow.get(colIndex).getDataValue()}" filterBy="#{dataRow.get(colIndex).getDataValue()}"
field="#{col}">
<f:facet name="header">
<h:outputText value="#{col.columnHeading}" />
</f:facet>
<p:outputLabel value="#{dataRow.get(colIndex).getDataValue()}" />
</p:columns>
</p:dataTable>


Now exporting only produces a exception on the first column that has a column heading of 'Find'

StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NumberFormatException: For input string: "Find"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at javax.el.ListELResolver.toInteger(ListELResolver.java:329)
at javax.el.ListELResolver.getValue(ListELResolver.java:146)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:156)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:184)
at com.sun.el.parser.AstValue.getValue(AstValue.java:114)
at com.sun.el.parser.AstValue.getValue(AstValue.java:177)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:183)
at org.jboss.weld.module.web.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
at org.primefaces.component.api.UITable.getConvertedFieldValue(UITable.java:563)
at org.primefaces.component.datatable.export.DataTableCSVExporter.addColumnValue(DataTableCSVExporter.java:212)
at org.primefaces.component.datatable.export.DataTableCSVExporter.exportCells(DataTableCSVExporter.java:162)
at org.primefaces.component.datatable.export.DataTableExporter.exportRow(DataTableExporter.java:253)
at org.primefaces.component.datatable.export.DataTableExporter.exportAll(DataTableExporter.java:238)
at org.primefaces.component.datatable.export.DataTableCSVExporter.doExport(DataTableCSVExporter.java:76)
at org.primefaces.component.datatable.export.DataTableExporter$DataTableVisitCallBack.visit(DataTableExporter.java:357)
at com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:127)
at org.primefaces.component.api.UIData.visitTree(UIData.java:683)
at org.primefaces.component.datatable.export.DataTableExporter$DataTableVisitCallBack.lambda$invoke$0(DataTableExporter.java:376)
at org.primefaces.util.ComponentUtils.invokeOnClosestIteratorParent(ComponentUtils.java:539)
at org.primefaces.component.datatable.export.DataTableExporter$DataTableVisitCallBack.invoke(DataTableExporter.java:374)
at org.primefaces.component.datatable.export.DataTableExporter.export(DataTableExporter.java:318)
at org.primefaces.component.export.DataExporter.processAction(DataExporter.java:157)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:72)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:490)
at javax.faces.component.UICommand.broadcast(UICommand.java:211)
at javax.faces.component.UIData.broadcast(UIData.java:1127)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:847)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1396)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:58)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:177)
at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:707)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:451)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1636)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:331)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:282)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:253)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:757)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:577)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:158)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:371)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:238)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
at java.base/java.lang.Thread.run(Thread.java:834)
|#]

without the following

sortBy="#{dataRow.get(colIndex).getDataValue()}" filterBy="#{dataRow.get(colIndex).getDataValue()}"
field="#{col}"

the export works

Melloware
Posts: 3717
Joined: 22 Apr 2013, 15:48

30 Jun 2021, 14:04

You error is this "java.lang.NumberFormatException: For input string: "Find"" So its trying to convert that column to a number but its the word "Find". Can you narrow it down any further?
PrimeFaces Developer | PrimeFaces Extensions Developer
GitHub Profile: https://github.com/melloware
PrimeFaces Elite 13.0.0 / PF Extensions 13.0.0
PrimeReact 9.6.1

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: Google [Bot] and 69 guests