2013-08-06 2 views
5

У меня есть <p:dataTable>:PrimeFaces DataExporter в XLS для нескольких столбцов не работает правильно

<p:dataTable id="contracttblenone" var="contract" value="#{reportController.listcontract}" rowKey="#{contract.id}" paginator="true" rows="10" paginatorPosition="bottom"   paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"   rowsPerPageTemplate="5,10,15" resizableColumns="true" emptyMessage=""> 
    <p:column> 
     <f:facet name="header"> 
      <h:outputText value="№"/> 
     </f:facet> 
     <h:outputText value="#{contract.id}"/> 
    </p:column> 
    <p:column> 
     <f:facet name="header"> 
      <h:outputText value="Firma Ad?"/> 
     </f:facet> 
     <h:outputText value="#{contract.name}"/> 
    </p:column> 
    <p:columns width="60" value="#{contract.liscolumn}" var="column"> 
     <f:facet name="header"> 
      <h:outputText value=" #{column.header} "/> 
     </f:facet> 
     <h:outputText value=" #{column.property} " /> 
    </p:columns> 
    <f:facet name="header"> 
     <h:outputText value="Sirket Sozlesmeler"/> 
    </f:facet> 

</p:dataTable> 

И это мой commandLink:

<h:commandLink> 
     <p:graphicImage value="../img/xls.png" /> 
     <p:dataExporter type="xls" target=":formreport:contracttblenone" 
      fileName="report" /> 
</h:commandLink> 

Вот как DataTable выглядит

enter image description here

Но экспортируемый xls отличается Ent. Он модифицирует все rowas как последний здесь является snaphsot от первенствует:

x

+0

Не могли бы вы отправить метод postProcessXLS? – dratewka

+0

@ dratewka У него ничего нет. Я могу удалить его. Некоторые стили для Excel. – user2634009

+0

Попробуйте экспортировать в 'type =" cvs "' и посмотреть, как выглядит сгенерированный файл в текстовом редакторе, - возможно, есть ошибка в Primefaces. – dratewka

ответ

0

Ну у меня тоже есть некоторые проблемы в использовании exporttoExcel functioanality из primefaces.I искал много на StackOverflow и primefacesForums, но только что получил чтобы узнать, что это проблема с версией, связанной с первичным интерфейсом. Так я сделал свою собственную функцию, которая теперь отлично работает, а также может быть изменена в соответствии с экспортом в другие форматы.

<p:commandLink id="back" value="Export to Excel" action="#{agendaBean.exportToExl}" immediate="true" 
        ajax="false" style="color: #086A87;" ></p:commandLink> 

После нажатия на ссылку метод exportToExl вызывается в компоненте, который имеет следующее содержание.

public String exportToExl() { 

     ExportToExcel expExlBean = new ExportToExcel(); 

     List<String> columnNames = new ArrayList<String>(); 
     columnNames.add("Agenda ID"); 
     columnNames.add("Matter"); 
     columnNames.add("Item"); 
     columnNames.add("OrderNo"); 
     columnNames.add("AccessPrivilegeString"); 

     columnNames.add("DocumentNameDisplay"); 
     columnNames.add("DocumentFolderPath"); 

     List<String> columnType = new ArrayList<String>(); 
     columnType.add(FrameWorkConstants.DO_NOT_FORMAT); 
     columnType.add(FrameWorkConstants.DO_NOT_FORMAT); 
     columnType.add(FrameWorkConstants.DO_NOT_FORMAT); 
     columnType.add(FrameWorkConstants.DO_NOT_FORMAT); 
     columnType.add(FrameWorkConstants.DO_NOT_FORMAT); 
     columnType.add(FrameWorkConstants.DO_NOT_FORMAT); 
     columnType.add(FrameWorkConstants.DO_NOT_FORMAT); 

     String companyFolderPath = new AgendaIMPL() 
       .getCompanyFolderPath(meetingID); 
     if (agendaList != null) { 
      for (int i = 0; i < agendaList.size(); i++) { 
       agendaList.get(i).setDocumentFolderPath(companyFolderPath); 
      } 
     } 
     List expList = agendaList; 

     if (expList == null || expList.isEmpty()) { 
      ResourceBundle rb = ResourceBundle 
        .getBundle("resources.error1"); 
      if (rb != null) { 
       Utils.addMessage(rb.getString("34").trim(), 
         FacesMessage.SEVERITY_ERROR); 
       return null; 
      } 
     } 

     String strVOName = "com.ultimatix.boardAdmin.vo.AgendaVO"; 

     FacesContext fc = FacesContext.getCurrentInstance(); 
     HttpServletResponse response = (HttpServletResponse) fc 
       .getExternalContext().getResponse(); 

     String flagStart = FrameWorkConstants.SINGLE; 
     expExlBean.exportToExcel(columnNames, columnType, response, 
       expList, strVOName, flagStart); 

     fc.responseComplete(); 
    return null; 
} 

Здесь AgendaList список вы используете в DataTable для заполнения rows.which вы хотите напечатать в листе Excel.

Сообщите мне, если вы обеспокоены проблемами.

+0

Я новичок в использовании экспорта штрихов, вы можете сказать мне, что такое «FrameworkConstants.DO_NOT_FOMRAT», потому что мое затмение выходит из области поиска. – 09Q71AO534

+0

Я думаю, вы можете в этом помочь: http://stackoverflow.com/questions/24889066/issue-with-primefaces-pdataexporter-which-exports-a-datatable-with-selectoneme/24893436#comment38744547_24893436 – 09Q71AO534

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