2014-01-10 1 views
3

Я использую перференлы 3.5 и у меня есть p: dataTable с некоторыми строками и данными, и я хотел бы экспортировать эти данные в файл xls или что-то в этом роде.Primefaces 3.5 Как экспортировать невидимые данныеТабличные строки с dataExporter

Я использовал код:

<p:commandButton id="exportBtn" icon="ui-icon-extlink" styleClass="statisticsMenuButton" ajax="false" title="#{msg.general_export_as_xls}"> 
    <p:dataExporter type="xls" target="cc-eventListTable-eventList" fileName="statistics"/> 
</p:commandButton> 

Это прекрасно работает!

Моя проблема заключается в том, что я хотел бы иметь другой текст ячейки в экспортированном файле и в браузере dataTable.

например. В экспортированном файле xls мне нужно другое форматирование даты, а затем в таблице данных браузера. В противном случае текст в ячейке браузера слишком длинный!

Я попытался добавить дополнительный столбец с rendered = "false" и exportable = "true" только для экспортированной таблицы. Но, к сожалению, это не сработает!

Есть ли у кого-нибудь идеи, как это сделать?

ответ

0

Я нашел обходной путь для решения моей проблемы ...

Чтобы сделать текст ячейки в моем dataTabe для браузера невидимую я гнал в CSS SYLE «видимость: скрытый;» к некоторому h: outputText.

<p:column styleClass="eventFrom" width="125" sortBy="#{event.dateFrom}"> 
    <f:facet name="header"> 
     <h:outputText value="#{msg.general_date}"></h:outputText> 
    </f:facet> 

    <h:outputText value="#{event.dateFrom}" id="dateFrom"> 
     <f:convertDateTime type="both" timeZone="#{userManagement.userOptions.timeZone}" pattern="#{msg.time_pattern_ymdhmsM_short}" locale="#{msg.local}" /> 
    </h:outputText> 

    <h:outputText value=" - " id="between" style="visibility:hidden;"></h:outputText> 

    <h:outputText value="#{event.dateTo}" id="dateTo" style="visibility:hidden;"> 
      <f:convertDateTime type="both" timeZone="#{userManagement.userOptions.timeZone}"pattern="#{msg.time_pattern_ymdhmsM_short}" locale="#{msg.local}" /> 
    </h:outputText> 

</p:column> 

Было бы лучше создать столбцы только для dataExporter, но я не нашел решения для этого.

5

С оказанной тег установлен в ложном так ли это не распространяется работы на данный момент (подмигнули было сообщено как ошибка: https://github.com/primefaces-extensions/primefaces-extensions.github.com/issues/209), но вы можете сделать это с помощью CSS, как это:

<p:column headerText="#{msg['book.coverType']}" style="display:none;"> 
     <h:outputText value="#{book.coverType}"/> 
</p:column> 

Другое решение заключается в добавлении метода почтового процесса в управляемый компонент и добавлении столбца оттуда.

public void postProcessXLS (Object document) { log.debug ("post processing Excel");

HSSFWorkbook workbook = (HSSFWorkbook) document; 

    addCoverType(workbook,book); 

} 

вы можете написать метод, как:

public void addCoverType(HSSFWorkbook workbook, List<Book> books) { 

    HSSFSheet sheet = workbook.getSheetAt(0); 
    HSSFCell cell = null; 

//row 0 is the header (not automatically added by primefaces) 
//add a fifth cell to each row 
    for (int i = 1; i < sheet.getLastRowNum() + 1; i++) { 
     sheet.getRow(i).createCell(4); 
     cell = sheet.getRow(i).getCell(4); 
     cell.setCellValue(book.get(i - 1).getCoverType()); 
    } 
    log.debug("cover type added"); 
} 

Если вы Сортируемый столбец заказ будет автоматически уважал, а :-D

Смежные вопросы