2016-05-28 6 views
7

Qui dopo aver recuperato i record dal database ho aggiunto dei dati in qualche lista e ho impostato alcune variabili di sessione per loro in modo che possa accedere in un altro metodo usando get (chiave) metodo di sessione che sono riuscito a fare così. Ora quello che voglio è che voglio creare record dinamici impostando questo valore di lista in fila ma non riesco a farlo. Crea file ma non c'è nessun record visualizzato. è il mio codice:come creare file dinamici di record per creare file xls usando la lista

package com.ca.actions; 

import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 

import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.struts2.dispatcher.SessionMap; 
import org.apache.struts2.interceptor.SessionAware; 

import com.ca.database.Database; 
import com.ca.pojo.Event; 
import com.itextpdf.text.Document; 
import com.itextpdf.text.Element; 
import com.itextpdf.text.PageSize; 
import com.itextpdf.text.Paragraph; 
import com.itextpdf.text.Phrase; 
import com.itextpdf.text.pdf.PdfPCell; 
import com.itextpdf.text.pdf.PdfPTable; 
import com.itextpdf.text.pdf.PdfWriter; 
import com.opensymphony.xwork2.ActionSupport; 
import com.opensymphony.xwork2.Preparable; 

public class DataForGeneralReportsAction extends ActionSupport implements 
     Preparable, SessionAware { 
    private List<String> eventsGeneral = new ArrayList<String>(); 
    private List<String> companiesGeneral = new ArrayList<String>(); 
    private SessionMap<String, Object> sessionMapGeneral; 
    List<String> eventIdList = new ArrayList<String>(); 
    List<String> eventNameList = new ArrayList<String>(); 
    List<String> eventVenueList = new ArrayList<String>(); 
    List<String> eventTimeList = new ArrayList<String>(); 
    List<String> companyNameList = new ArrayList<String>(); 
    List<String> totalAmountList = new ArrayList<String>(); 
    List<String> receivedAmountList = new ArrayList<String>(); 
    List<String> balanceAmountList = new ArrayList<String>(); 
    List<String> eventTdsList = new ArrayList<String>(); 
    List<String> paymentDateList = new ArrayList<String>(); 
    List<String> chequeDdList = new ArrayList<String>(); 

    private String eventGeneral = null; 
    private String companyGeneral = null; 
    List<Event> dataForGeneralReports; 

    public List<String> getEventIdList() { 
     return eventIdList; 
    } 

    public void setEventIdList(List<String> eventIdList) { 
     this.eventIdList = eventIdList; 
    } 

    public List<String> getEventNameList() { 
     return eventNameList; 
    } 

    public void setEventNameList(List<String> eventNameList) { 
     this.eventNameList = eventNameList; 
    } 

    public List<String> getEventVenueList() { 
     return eventVenueList; 
    } 

    public void setEventVenueList(List<String> eventVenueList) { 
     this.eventVenueList = eventVenueList; 
    } 

    public List<String> getEventTimeList() { 
     return eventTimeList; 
    } 

    public void setEventTimeList(List<String> eventTimeList) { 
     this.eventTimeList = eventTimeList; 
    } 

    public List<String> getCompanyNameList() { 
     return companyNameList; 
    } 

    public void setCompanyNameList(List<String> companyNameList) { 
     this.companyNameList = companyNameList; 
    } 

    public List<String> getTotalAmountList() { 
     return totalAmountList; 
    } 

    public void setTotalAmountList(List<String> totalAmountList) { 
     this.totalAmountList = totalAmountList; 
    } 

    public List<String> getReceivedAmountList() { 
     return receivedAmountList; 
    } 

    public void setReceivedAmountList(List<String> receivedAmountList) { 
     this.receivedAmountList = receivedAmountList; 
    } 

    public List<String> getBalanceAmountList() { 
     return balanceAmountList; 
    } 

    public void setBalanceAmountList(List<String> balanceAmountList) { 
     this.balanceAmountList = balanceAmountList; 
    } 

    public List<String> getEventTdsList() { 
     return eventTdsList; 
    } 

    public void setEventTdsList(List<String> eventTdsList) { 
     this.eventTdsList = eventTdsList; 
    } 

    public List<String> getPaymentDateList() { 
     return paymentDateList; 
    } 

    public void setPaymentDateList(List<String> paymentDateList) { 
     this.paymentDateList = paymentDateList; 
    } 

    public List<String> getChequeDdList() { 
     return chequeDdList; 
    } 

    public void setChequeDdList(List<String> chequeDdList) { 
     this.chequeDdList = chequeDdList; 
    } 

    public SessionMap<String, Object> getSessionMapGeneral() { 
     return sessionMapGeneral; 
    } 

    public void setSessionMapGeneral(
      SessionMap<String, Object> sessionMapGeneral) { 
     this.sessionMapGeneral = sessionMapGeneral; 
    } 

    public String getEventGeneral() { 
     return eventGeneral; 
    } 

    public void setEventGeneral(String eventGeneral) { 
     this.eventGeneral = eventGeneral; 
    } 

    public String getCompanyGeneral() { 
     return companyGeneral; 
    } 

    public void setCompanyGeneral(String companyGeneral) { 
     this.companyGeneral = companyGeneral; 
    } 

    public List<Event> getDataForGeneralReports() { 
     return dataForGeneralReports; 
    } 

    public void setDataForGeneralReports(List<Event> dataForGeneralReports) { 
     this.dataForGeneralReports = dataForGeneralReports; 
    } 

    public List<String> getEventsGeneral() { 
     return eventsGeneral; 
    } 

    public void setEventsGeneral(List<String> eventsGeneral) { 
     this.eventsGeneral = eventsGeneral; 
    } 

    public List<String> getCompaniesGeneral() { 
     return companiesGeneral; 
    } 

    public void setCompaniesGeneral(List<String> companiesGeneral) { 
     this.companiesGeneral = companiesGeneral; 
    } 

    public DataForGeneralReportsAction() { 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void prepare() throws Exception { 
     // TODO Auto-generated method stub 
     Connection con = null; 
     try { 
      con = new Database().Get_Connection(); 

      // load companies 
      PreparedStatement ps = con 
        .prepareStatement("SELECT DISTINCT company_name FROM event"); 
      ResultSet rs = ps.executeQuery(); 
      while (rs.next()) { 
       companiesGeneral.add(rs.getString("company_name")); 
      } 

      // load events 
      ps = con.prepareStatement("SELECT DISTINCT event_name FROM event"); 
      rs = ps.executeQuery(); 
      while (rs.next()) { 
       eventsGeneral.add(rs.getString("event_name")); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      con.close(); 
     } 

    } 

    @Override 
    public String execute() throws Exception { 

     Connection con = null; 
     try { 
      con = new Database().Get_Connection(); 

      // load the table. The first time the table is loaded completely 
      String sql = "SELECT EVENT_ID, EVENT_NAME, COMPANY_NAME,EVENT_VENUE,TOTAL_AMOUNT,RECEIVED_AMOUNT,EVENT_TDS,BALANCE_AMOUNT,CHEQUE_DD_NO," 
        + "date_format(PAYMENT_DATE,'%d/%m/%Y') as dateAsPayment,EVENT_TIME " 
        + "FROM event"; 
      String where = ""; 

      // if instead this action has been called from the JSP page, 
      // the result is filtered on event and company: 
      if (eventGeneral != null && companyGeneral != null) { 
       where = " WHERE event_name = ? AND company_name = ?"; 
      } 

      // load companies 
      PreparedStatement ps = con.prepareStatement(sql + where); 
      if (where.length() > 0) { 
       ps.setString(1, eventGeneral); 
       ps.setString(2, companyGeneral); 
      } 
      dataForGeneralReports = new ArrayList<Event>(); 
      ResultSet rs = ps.executeQuery(); 
      int i, j = 0; 
      while (rs.next()) { 

       dataForGeneralReports.add(new Event(rs.getString("EVENT_ID"), 
         rs.getString("EVENT_NAME"), rs 
           .getString("COMPANY_NAME"), rs 
           .getString("EVENT_VENUE"), rs 
           .getString("EVENT_TIME"), rs 
           .getString("TOTAL_AMOUNT"), rs 
           .getString("RECEIVED_AMOUNT"), rs 
           .getString("CHEQUE_DD_NO"), rs 
           .getString("dateAsPayment"), rs 
           .getString("BALANCE_AMOUNT"), rs 
           .getString("EVENT_TDS"))); 

       eventIdList.add(rs.getString("EVENT_ID")); 
       eventNameList.add(rs.getString("EVENT_NAME")); 
       companyNameList.add(rs.getString("COMPANY_NAME")); 
       eventVenueList.add(rs.getString("EVENT_VENUE")); 
       eventTimeList.add(rs.getString("EVENT_TIME")); 
       totalAmountList.add(rs.getString("TOTAL_AMOUNT")); 
       receivedAmountList.add(rs.getString("RECEIVED_AMOUNT")); 
       chequeDdList.add(rs.getString("CHEQUE_DD_NO")); 
       paymentDateList.add(rs.getString("dateAsPayment")); 
       eventTdsList.add(rs.getString("EVENT_TDS")); 
       balanceAmountList.add(rs.getString("BALANCE_AMOUNT")); 

      } 
      sessionMapGeneral.put("eventIdPdf", eventIdList); 
      sessionMapGeneral.put("eventNamePdf", eventNameList); 
      sessionMapGeneral.put("companyNamePdf", companyNameList); 
      sessionMapGeneral.put("eventVenuePdf", eventVenueList); 
      sessionMapGeneral.put("eventTimePdf", eventTimeList); 
      sessionMapGeneral.put("totalAmountPdf", totalAmountList); 
      sessionMapGeneral.put("receivedAmountPdf", receivedAmountList); 
      sessionMapGeneral.put("chequeDdPdf", chequeDdList); 
      sessionMapGeneral.put("paymentDatePdf", paymentDateList); 
      sessionMapGeneral.put("eventTdsPdf", eventTdsList); 
      sessionMapGeneral.put("balanceAmountPdf", balanceAmountList); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      con.close(); 
     } 

     return SUCCESS; 

    } 

    public String generatePdfGeneral() throws Exception { 

     System.out.println(sessionMapGeneral.get("eventIdPdf")); 
     Document document = new Document(PageSize.A4_LANDSCAPE, 50, 50, 50, 50); 
     float[] columnWidths = { 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }; 

     PdfWriter writer = PdfWriter.getInstance(document, 
       new FileOutputStream("D:\\GeneralReports.pdf")); 
     PdfPTable table = new PdfPTable(11); 
     table.setSpacingBefore(25); 
     table.setWidthPercentage(100); 
     table.setSpacingAfter(25); 
     table.setWidths(columnWidths); 
     PdfPCell c1 = new PdfPCell(new Phrase("Event ID ")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 

     c1 = new PdfPCell(new Phrase("Event Name ")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 

     c1 = new PdfPCell(new Phrase("Event Time")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 

     c1 = new PdfPCell(new Phrase("Event Venue")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Company Name")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Total Amount")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Received Amount")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Cheque/DD Number")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Payment Date")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Event TDS")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Balance Amount")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 

     table.setHeaderRows(1); 
     PdfPCell cell = new PdfPCell(); 
     List<String> list = (List<String>) sessionMapGeneral.get("eventIdPdf"); 
     for (String item : list) { 
      cell.addElement(new Paragraph(item)); 
     } 
     PdfPCell cell1 = new PdfPCell(); 
     List<String> list1 = (List<String>) sessionMapGeneral 
       .get("eventNamePdf"); 
     for (String item : list1) { 
      cell1.addElement(new Paragraph(item)); 
     } 
     table.addCell(cell1); 
     PdfPCell cell2 = new PdfPCell(); 
     List<String> list2 = (List<String>) sessionMapGeneral 
       .get("eventTimePdf"); 
     for (String item : list2) { 
      cell2.addElement(new Paragraph(item)); 
     } 
     table.addCell(cell2); 
     PdfPCell cell3 = new PdfPCell(); 
     List<String> list3 = (List<String>) sessionMapGeneral 
       .get("eventVenuePdf"); 
     for (String item : list1) { 
      cell3.addElement(new Paragraph(item)); 
     } 

     table.addCell(cell3); 
     PdfPCell cell4 = new PdfPCell(); 
     List<String> list4 = (List<String>) sessionMapGeneral.get("eventIdPdf"); 
     for (String item : list4) { 
      cell4.addElement(new Paragraph(item)); 
     } 

     table.addCell(cell4); 
     PdfPCell cell5 = new PdfPCell(); 
     List<String> list5 = (List<String>) sessionMapGeneral 
       .get("companyNamePdf"); 
     for (String item : list5) { 
      cell5.addElement(new Paragraph(item)); 
     } 

     table.addCell(cell5); 
     PdfPCell cell6 = new PdfPCell(); 
     List<String> list6 = (List<String>) sessionMapGeneral 
       .get("totalAmountPdf"); 
     for (String item : list6) { 
      cell6.addElement(new Paragraph(item)); 
     } 

     table.addCell(cell6); 
     PdfPCell cell7 = new PdfPCell(); 
     List<String> list7 = (List<String>) sessionMapGeneral 
       .get("receivedAmountPdf"); 
     for (String item : list7) { 
      cell7.addElement(new Paragraph(item)); 
     } 

     table.addCell(cell7); 
     PdfPCell cell8 = new PdfPCell(); 
     List<String> list8 = (List<String>) sessionMapGeneral 
       .get("chequeDdPdf"); 
     for (String item : list8) { 
      cell8.addElement(new Paragraph(item)); 
     } 

     table.addCell(cell8); 
     PdfPCell cell9 = new PdfPCell(); 
     List<String> list9 = (List<String>) sessionMapGeneral 
       .get("paymentDatePdf"); 
     for (String item : list9) { 
      cell9.addElement(new Paragraph(item)); 
     } 

     table.addCell(cell9); 
     PdfPCell cell10 = new PdfPCell(); 
     List<String> list10 = (List<String>) sessionMapGeneral 
       .get("eventTdsPdf"); 
     for (String item : list10) { 
      cell10.addElement(new Paragraph(item)); 
     } 

     table.addCell(cell10); 
     PdfPCell cell11 = new PdfPCell(); 
     List<String> list11 = (List<String>) sessionMapGeneral 
       .get("balanceAmountPdf"); 
     for (String item : list11) { 
      cell11.addElement(new Paragraph(item)); 
     } 

     table.addCell(cell11); 

     document.open(); 
     document.add(table); 
     document.close(); 
     return "success"; 

    } 

    public String generateGeneralXls() throws Exception { 
     try { 
      HSSFWorkbook workbook = new HSSFWorkbook(); 
      HSSFSheet sheet = workbook.createSheet("FirstSheet"); 
      HSSFRow rowhead = sheet.createRow((short) 0); 
      rowhead.createCell(0).setCellValue("Event ID"); 
      rowhead.createCell(1).setCellValue("Event Name"); 
      rowhead.createCell(2).setCellValue("Event Time"); 
      rowhead.createCell(3).setCellValue("Event Venue"); 
      rowhead.createCell(4).setCellValue("Company Name"); 
      rowhead.createCell(5).setCellValue("Total Amount"); 
      rowhead.createCell(6).setCellValue("Received Amount"); 
      rowhead.createCell(7).setCellValue("Payment Date"); 
      rowhead.createCell(8).setCellValue("Cheque/DD No."); 
      rowhead.createCell(9).setCellValue("Event TDS"); 
      rowhead.createCell(10).setCellValue("Balance Amount"); 
      FileOutputStream fileOut; 

      fileOut = new FileOutputStream("D:\\Samplmgjkm.xls"); 

      // HSSFRow row1 = sheet.createRow((short) 1); 
      System.out.println(sessionMapGeneral.size()); 
      for (int i = 1; i <= sessionMapGeneral.size(); i++) { 
       HSSFRow row1 = sheet.createRow((short) i); 
       row1.createCell(i-1).setCellValue(
         sessionMapGeneral.get("eventIdPdf").toString()); 

       row1.createCell(i).setCellValue(
         sessionMapGeneral.get("eventNamePdf").toString()); 

      } 


      /* 
      * row1.createCell(1).setCellValue(
      * sessionMapGeneral.get("eventNamePdf").toString()); 
      * row1.createCell(1).setCellValue(
      * sessionMapGeneral.get("eventNamePdf").toString()); 
      * row1.createCell(1).setCellValue(
      * sessionMapGeneral.get("eventNamePdf").toString()); 
      * row1.createCell(1).setCellValue(
      * sessionMapGeneral.get("eventNamePdf").toString()); 
      * row1.createCell(1).setCellValue(
      * sessionMapGeneral.get("eventNamePdf").toString()); 
      * row1.createCell(1).setCellValue(
      * sessionMapGeneral.get("eventNamePdf").toString()); 
      * row1.createCell(1).setCellValue(
      * sessionMapGeneral.get("eventNamePdf").toString()); 
      * row1.createCell(1).setCellValue(
      * sessionMapGeneral.get("eventNamePdf").toString()); 
      * row1.createCell(1).setCellValue(
      * sessionMapGeneral.get("eventNamePdf").toString()); 
      */ 

      workbook.write(fileOut); 
      fileOut.close(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return "success"; 
    } 

    @Override 
    public void setSession(Map<String, Object> map) { 
     // TODO Auto-generated method stub 
     sessionMapGeneral = (SessionMap) map; 
    } 

} 

ho modificato il mio codice in cui ottengo risultato nella stringa ma tutti i record sono mostrati in un'unica cella. Voglio ogni record in una nuova cella. Ho un'immagine allegata di come appare. enter image description here Nessun errore visualizzato. Per favore aiutami a risolvere il mio problema.

+0

qualcuno mi aiuti per favore :( –

+0

'createCell (2)' e 3, 4, 5, ... –

+0

mi puoi mostrare la tua classe sessionMapGeneral in cui si dispone di mantenere il getter e setter metodi per tutte le variabili? – Vickyexpert

risposta

2

Prima opportuno ripartire: utilizzo evento object.You costruire una lista di oggetti Event si potrebbe usare e mettere in SessionMap e se si vuole, a costruire l'altro elenco con elenco degli eventi)

qui e Esemplare assumendo di avere getter in Oggetto evento:

public String generateGeneralXls() throws Exception { 
      try { 

       String titles="Event ID,Event Name,Event Time,Event Venue,Company Name,Total Amount,Received Amount,Payment Date,Cheque/DD No,Event TDS,Balance Amount"; 
       String[]arrTiltes=titles.split(","); 





       FileOutputStream fileOut = new FileOutputStream("poi-test.xls"); 
       HSSFWorkbook workbook = new HSSFWorkbook(); 
       HSSFSheet worksheet = workbook.createSheet("POI Worksheet"); 


       int row=0; 
       HSSFRow rowTitle = worksheet.createRow(row); 

       // set titles 



       for(int i=0;i<arrTiltes.length;i++){ 
        HSSFCell cellTitle=rowTitle.createCell(i); 
        cellTitle.setCellValue(arrTiltes[i]); 


       } 

       //setting values 
       row++; 
       for(Event dataValue:dataForGeneralReports){ 
        HSSFRow rowValue = worksheet.createRow(row); 


         HSSFCell cell0 = rowValue.createCell(0); 
         cell0.setCellValue(dataValue.getEventID()); 

         HSSFCell cell1 = rowValue.createCell(1); 
         cell1.setCellValue(dataValue.getEventName()); 

         HSSFCell cell2 = rowValue.createCell(2); 
         cell2.setCellValue(dataValue.getEventTime()); 

         HSSFCell cell3 = rowValue.createCell(3); 
         cell3.setCellValue(dataValue.getEventVenue()); 

         HSSFCell cell4 = rowValue.createCell(4); 
         cell4.setCellValue(dataValue.getCompanyName()); 

         HSSFCell cell5 = rowValue.createCell(5); 
         cell5.setCellValue(dataValue.getTotalAmount()); 

         HSSFCell cell6 = rowValue.createCell(6); 
         cell6.setCellValue(dataValue.getReceivedAmount()); 

         HSSFCell cell7 = rowValue.createCell(7); 
         cell7.setCellValue(dataValue.getPaymentDate()); 

         HSSFCell cell8 = rowValue.createCell(8); 
         cell8.setCellValue(dataValue.getChequeDDNo()); 

         HSSFCell cell9 = rowValue.createCell(9); 
         cell9.setCellValue(dataValue.getEventTDS()); 


         HSSFCell cell10 = rowValue.createCell(10); 
         cell10.setCellValue(dataValue.getBalanceAmount()); 

         row++;      


       } 



       workbook.write(fileOut); 
       fileOut.flush(); 
       fileOut.close(); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      return "success"; 
     } 

è possibile utilizzare la stessa idea per voi PDF. essere carreful nel tuo codice per PDF, ho il sospetto che non ci si aspettano risultati.

  1. si è dimenticato di aggiungere cellulare sul tavolo (prima cella sul vostro codice)
  2. hai 12 celle tuttavia si dichiara 11:

    io suggerisco voi o rimuovere "blocco" per

PdfPCell cell4

seconda proposta: se si vuole veramente utilizzare le vostre liste, poi iterare su ogni lista per ottenere il primo valore in ciascuno di essi, secondo valore di ciascuno di essi, ecc ..

Esempio assumendo tutta la lista hanno la stessa dimensione (proveniente dal gruppo di risultati):

public String generateGeneralXlsOther() throws Exception { 
    try { 

     String titles="eventIdPdf,eventNamePdf,companyNamePdf,eventVenuePdf,eventTimePdf,totalAmountPdf,receivedAmountPdf,receivedAmountPdf,chequeDdPdf,paymentDatePdf,eventTdsPdf,balanceAmountPdf"; 

     String[]arrTiltes=titles.split(",");   



     FileOutputStream fileOut = new FileOutputStream("poi-testOtehr.xls"); 
     HSSFWorkbook workbook = new HSSFWorkbook(); 
     HSSFSheet worksheet = workbook.createSheet("POI Worksheet"); 



     HSSFRow rowTitle = worksheet.createRow(0); 

     // set titles 



     for(int i=0;i<arrTiltes.length;i++){ 
      HSSFCell cellTitle=rowTitle.createCell(i); 
      cellTitle.setCellValue(arrTiltes[i]); 


     } 


     int size=((List<String>) sessionMapGeneral.get(arrTiltes[0])).size(); 
     for(int row=0;row<size;row++){ 


      HSSFRow rowValue = worksheet.createRow(row+1); 
      int cell=0; 
      for(int i=0;i<arrTiltes.length;i++){ 

       List<String> theList=(List<String>) sessionMapGeneral.get(arrTiltes[i]); 
       HSSFCell cell0 = rowValue.createCell(cell); 
       cell0.setCellValue(theList.get(row)); 
       cell++; 

      } 
     } 


     workbook.write(fileOut); 
     fileOut.flush(); 
     fileOut.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return "success"; 
} 
+0

fornisce un'eccezione di puntatore nullo a (Event dataValue: dataForGeneralReports) questa riga –

+0

@Siddhesh Kalgaonkar inserisce dataForGeneralReports in sessionMapGeneral in execute() Method.come lo hai fatto per gli elenchi.e ottieni (da sessionMapGeneral) nel generateGeneralXls () prima di iterare su di esso (prima della riga specificata). – Enjy

+0

dataForGeneralReports = (Lista ) sessionMapGeneral.get ("dataforgeneral"); \t \t \t Ho aggiunto questa linea e ha funzionato .... Grazie mille !!! –

4

Prova questo:

FileOutputStream fileOut; 
fileOut = new FileOutputStream("D:\\Samplmgjkm.xls"); 

int nextRow = 1; 

while(rs.next()){ 
    HSSFRow r = sheet.getRow(nextRow); 
    if (r == null) { 
     r = sheet.createRow(nextRow); 
    } 

    HSSFCell c = r.getCell(1, Row.CREATE_NULL_AS_BLANK); 
    c.setCellValue(rs.getString(1)); 

    HSSFCell c2 = r.getCell(2, Row.CREATE_NULL_AS_BLANK); 
    c2.setCellValue(rs.getString(2)); 

    nextRow++; 
} 
+0

Non riesco a utilizzare rs.next in questo metodo. Ho recuperato i dati nell'oggetto arraylist in qualche altro metodo e ho passato quell'oggetto lista in sessione e voglio usare la variabile di sessione (che ha dati di tipo stringa) per creare record dinamici. Quindi puoi aiutarmi con lo stesso? –

+0

Ho modificato il mio codice ora –

+0

Se si sta utilizzando List, utilizzare un ciclo For Each invece che while – Jobin

1

Ho controllato il codice e fatto qualche modifica, come di seguito, in modo da fare riferimento al di sotto del codice e si otterrà una soluzione.

List<String> eventIdPdf = (List<String>) sessionMapGeneral.get("eventNamePdf"); 

List<String> eventNamePdf = (List<String>) sessionMapGeneral.get("eventNamePdf"); 


for (int i = 1; i <= sessionMapGeneral.size(); i++) { 
      HSSFRow row1 = sheet.createRow((short) i); 
      row1.createCell(i-1).setCellValue(eventIdPdf.get(i).toString()); 

      row1.createCell(i).setCellValue(eventNamePdf.get(i).toString()); 

     } 

Come si sta assumendo lista di stringhe in una variabile come eventIdPdf, così come per l'utilizzo nel codice che si sta scrivendo intero elenco in una cella Perciò si stanno ottenendo intero elenco in una cella, ora controllare sopra metodo in modo visualizzerà una risposta una per una.

Spero che questo funzionerà ..

+0

Ci scusiamo per aver dimenticato che il ciclo for potrebbe non funzionare correttamente, potrebbe essere necessario prendere per (int i = 0; i Vickyexpert

+0

grazie per la risposta, signore. Proverò e ti farò sapere –

+0

No signore, mostra la linea rossa sul metodo setcellvalue e anche il tuo secondo approccio non ha funzionato. –

0

tuo primo problema è qui:

row1.createCell(i-1).setCellValue(
         sessionMapGeneral.get("eventIdPdf").toString()); 

perchè sessionMapGeneral.get("eventIdPdf").toString() restituisce l'intero eventIdList, o più precisamente, tutti i valori di eventIdList come stringa, in modo che il il risultato di questa espressione è
"[value1, value2, ... , valueN]"
e questo risultato (molto lungo) va completamente allo row1.createCell(i-1). Ma in realtà, Cell(i-1) dovrebbe ottenere solo il "value1". E qui andiamo a

tua secondo problema:

for (int i = 1; i <= sessionMapGeneral.size(); i++) 

eseguire iterazioni solo attraverso il sessionMapGeneral, ma scorrendo 2D-strutture come tavoli o matrici richiede due cicli (ciclo nidificato). Nota, gli elementi sessionMapGeneral's sono coppie chiave-valore, dove ogni chiave è una stringa, ad es. "eventIdPdf" e ogni valore è un elenco, ad es. eventIdList. Quindi, nel primo ciclo dovresti accedere ai valori (elenchi) di sessionMapGeneral per ottenere i tuoi dati memorizzati lì. Quindi, nel secondo ciclo, puoi scorrere le liste che hai ottenuto nel primo ciclo, per ottenere ogni singolo elemento di dati e impostarlo nella cella richiesta della tabella.
Il prossimo piccolo problema è, non è possibile accedere SessionMap's elementi dall'indice, ma c'è un modo per "battere il sistema" :) - qui è

la vostra soluzione: (si prega di prestare attenzione ai commenti)

//modify your key-Strings in order to be able to sort them later easily 
     sessionMapGeneral.put("01_eventIdPdf", eventIdList); 
     sessionMapGeneral.put("02_eventNamePdf", eventNameList); 
     sessionMapGeneral.put("03_companyNamePdf", companyNameList); 
     sessionMapGeneral.put("04_eventVenuePdf", eventVenueList); 
     sessionMapGeneral.put("05_eventTimePdf", eventTimeList); 
     sessionMapGeneral.put("06_totalAmountPdf", totalAmountList); 
     sessionMapGeneral.put("07_receivedAmountPdf", receivedAmountList); 
     sessionMapGeneral.put("08_chequeDdPdf", chequeDdList); 
     sessionMapGeneral.put("09_paymentDatePdf", paymentDateList); 
     sessionMapGeneral.put("10_eventTdsPdf", eventTdsList); 
     sessionMapGeneral.put("11_balanceAmountPdf", balanceAmountList); 

...

fileOut = new FileOutputStream("D:\\Samplmgjkm.xls"); 

// get all the key-Strings from sessionMapGeneral and store them in an ArrayList in order to be able to access the elements by index 
List<String> keys = new ArrayList<String>(sessionMapGeneral.keySet()); 
// and sort them, so that they suit to your "rowhead" 
Collections.sort(keys); 

// iterate through the keys and fill out the xls table column by column: 
for (int key = 0; key < keys.size(); key++) { 
    //hold the current List from sessionMapGeneral for the current column in a variable 
    List<String> currentList = (List<String>) (sessionMapGeneral.get(keys.get(key))); 
    // iterate through the current ArrayList (column) and fill out the cells of this column row by row: 
    for (int row = 0; row < currentList.size(); row++) { 
     // hold the current row in a variable 
     HSSFRow currentRow = sheet.getRow(row+1); 
     // create a row only once to avoid deleting the data set earlier and set the value into the cell 
     if (currentRow == null) { 
      currentRow = sheet.createRow((short) row+1); // I don't understand why do you cast it to short. To save 16 bit per row? 
      currentRow.createCell(key).setCellValue(currentList.get(row)); 
     } else { 
      currentRow.createCell(key).setCellValue(currentList.get(row)); 
     } 
    } 
// to make the width of columns looking well, add this line here: 
sheet.autoSizeColumn(key); 
} 
+0

dà eccezione calco in List currentList = (Lista ) (sessionMapGeneral \t \t \t \t \t \t .get (keys.get (chiave))); questa linea –

+0

@SiddheshKalgaonkar in realtà non dovrebbe, funziona per me. Ecco un [screenshot] (http://data3.floomby.com/files/share/8_6_2016/16/k8dA686rakOjNBhVOGI8Lw.png) della tabella dei risultati riempita con dati casuali. _Che_ non può essere lanciato su _what_?Potresti darmi per favore il messaggio completo di eccezione? – Yev