导出文本然后使用dataexporter以excel或pdf格式化图像

时间:2014-03-11 08:59:39

标签: jsf jsf-2 primefaces

我正在使用primefaces 3.4.2 jar。我在一列中有一个带有图像的数据表,我想导出给定的文本而不是导出图形图像的值“org.primefaces.component.graphicimage.GraphicImage@578a5496”in excel

<p:dataTable id="Data" var="data" value="#{bean.List}">

<p:column style="width:3%">
    <f:facet name="header">
        <h:outputText value="Value"></h:outputText> 
    </f:facet>
    <h:graphicImage style="border:0;" name="image1.png" library ="images" rendered="#{data.image eq 'image1'}"/>
    <h:graphicImage style="border:0;" name="image2.png" library ="images" rendered="#{data.image eq 'image2'"/>
</p:column>

</p:dataTable>

<h:commandLink id="excelDataExporterLink">
    <h:graphicImage id="searchExce1" name="excel1.png" library="images"></h:graphicImage>
    <p:dataExporter type="xls" target="Data" fileName="Data" pageOnly="true" />
</h:commandLink>

我想将文本image1/image2导出到相应的“值”列。目前将导出文本org.primefaces.component.graphicimage.GraphicImage@578a5496 在excel或pdf。

1 个答案:

答案 0 :(得分:0)

一种方法是扩展ExcelExporter(我想类似的事情也可以用PDFExporter完成),如下所示:

请注意,该值将取自alt属性

public class ExtendedExcelExporter extends ExcelExporter {

@Override
protected String exportValue(FacesContext context, UIComponent component) {
    if (component instanceof HtmlGraphicImage) {
        return (String) component.getAttributes().get("alt");
    }
    else {
        return super.exportValue(context, component);
    }
}

}

以上摘自Issue 4013: Support for CellEditor and Images in Exporter


另请注意,此功能已在 PrimeFaces ELITE 4.0.9和3.5.25中发布