无法使用数据导出器导出到primeface中的Excel

时间:2014-12-17 07:44:06

标签: jsf-2 primefaces

我正在尝试使用primefaces 5.1,poi 3.9将数据表导出到excel。我的xhtml代码是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

<h:head>
    <h:outputStylesheet library="css" name="custom.css" />
    <h:outputScript library="js" name="customjs.js" />

</h:head>
<h:body>
    <h:form id="form">
        <h:form>
            <p:dataTable id="tbl" var="tempEmployeeInOut"
                value="#{tempInOut.tempEmployeeInOuts}"
                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {Exporters}"
                paginator="true" rows="10" style="margin-bottom:20px">

                <f:facet name="{Exporters}">
                        <h:commandLink>
                        <p:graphicImage library="images" name="excel.png" width="24" />
                        <p:dataExporter type="xls" target="tbl" fileName="tempEmployeeInOut" />
                    </h:commandLink>

                    <h:commandLink>
                        <p:graphicImage library="images" name="pdf.png" width="24" />
                        <p:dataExporter type="pdf" target="tbl" fileName="tempEmployeeInOut" />
                    </h:commandLink>

                    <h:commandLink>
                        <p:graphicImage library="images" name="csv.png" width="24" />
                        <p:dataExporter type="csv" target="tbl" fileName="tempEmployeeInOut" />
                    </h:commandLink>

                    <h:commandLink>
                        <p:graphicImage library="images" name="xml.png" width="24" />
                        <p:dataExporter type="xml" target="tbl" fileName="tempEmployeeInOut" />
                    </h:commandLink>
                </f:facet>

                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Employee Id" />
                    </f:facet>
                    <h:outputText value="#{tempEmployeeInOut.empID}" />
                </p:column>

                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Name" />
                    </f:facet>
                    <h:outputText value="#{tempEmployeeInOut.name}" />
                </p:column>

                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Entry Date" />
                    </f:facet>
                    <h:outputText value="#{tempEmployeeInOut.entryDate}" />
                </p:column>

                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Morning In Time" />
                    </f:facet>
                    <h:outputText value="#{tempEmployeeInOut.morInTime}" />
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Lunch Out Time" />
                    </f:facet>
                    <h:outputText value="#{tempEmployeeInOut.lunchOutTime}" />
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Lunch In Time" />
                    </f:facet>
                    <h:outputText value="#{tempEmployeeInOut.lunchInTime}" />
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="OutTime" />
                    </f:facet>
                    <h:outputText value="#{tempEmployeeInOut.outTime}" />
                </p:column>
            </p:dataTable>

            <h3>Export Page Data Only</h3>
            <h:commandLink>
                <p:graphicImage library="images" name="excel.png" />
                <p:dataExporter type="xls" target="tbl" fileName="cars"
                    pageOnly="true" />
            </h:commandLink>

            <h:commandLink>
                <p:graphicImage library="images" name="pdf.png" />
                <p:dataExporter type="pdf" target="tbl" fileName="cars"
                    pageOnly="true" />
            </h:commandLink>

            <h:commandLink>
                <p:graphicImage library="images" name="csv.png" />
                <p:dataExporter type="csv" target="tbl" fileName="cars"
                    pageOnly="true" />
            </h:commandLink>

            <h:commandLink>
                <p:graphicImage library="images" name="xml.png" />
                <p:dataExporter type="xml" target="tbl" fileName="cars"
                    pageOnly="true" />
            </h:commandLink>
        </h:form>

    </h:form>


</h:body>


</html>

我的TempInOut课程没什么特别之处。我能够将数据显示在数据表中。但是当我点击导出到excel图标或任何其他图标时,除了url有一个#附加后,没有任何事情发生。我在很多地方搜索过,但大多数都有版本问题。我无法理解我做错了什么。

我的数据表看起来像这样。

Export to excel

1 个答案:

答案 0 :(得分:2)

您是否添加了 Apache POI 依赖?

如果没有, 从Apache POI download page下载最新的稳定版本,解压缩下载的文件,将库放在/WEB-INF/lib文件夹中,然后在服务器上重新运行webapp。

或者,如果您正在使用Maven,请将此依赖项复制并粘贴到您的pom.xml上:

<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>3.10-FINAL</version>
</dependency>