Лучший вариант будет включать расширение org.primefaces.component.export.ExcelExporter
и переопределение метода exportValue
для применения вашей настройки.Там у вас есть полный доступ к компонентам вывода.Укажите свой собственный экземпляр расширения экспортера для атрибута p:dataExporter
customExporter
.
Пример может выглядеть следующим образом:
<h:form>
<h:commandLink title="hejjj!">
Export to XLS
<p:dataExporter type="xls" customExporter="#{myBean.customExporter}"
target="tbl" fileName="anyFilename" />
</h:commandLink>
<p:dataTable id="tbl" value="#{myBean.rows}" var="row">
<p:column headerText="Formatted Numbers with Spaces">
<h:outputText value="#{row.number}">
<f:converter .../>
<f:attribute name="isFormattedNumber" value="1" />
</h:outputText>
</p:column>
</p:dataTable>
</h:form>
Обратите внимание на <f:attribute name="isFormattedNumber" value="1" />
, добавленный кh:outputText
, который поможет различить компонент при экспорте, используя CustomExcelExporter
ниже:
package my.package;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import org.primefaces.component.export.ExcelExporter;
public class CustomExcelExporter extends ExcelExporter {
@Override
protected String exportValue(FacesContext context, UIComponent component) {
String exportedValue = super.exportValue(context, component);
if (component.getAttributes().containsKey("isFormattedNumber")) {
return exportedValue.replace(" ", "");
} else {
return exportedValue;
}
}
}
MyBean, просто чтобы показать, где создается экспорт:
package my.package;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import org.primefaces.component.export.Exporter;
@Named
@RequestScoped
public class MyBean {
private Exporter customExporter;
@PostConstruct
public void init() {
customExporter = new CustomExcelExporter();
}
/** getters, setters */
}
Другой вариант будетпопробовать функциональность custom export , добавив пользовательский атрибут exportFunction
во все рассматриваемые столбцы.