2012-03-19 11 views
5

Sto avendo difficoltà scrittura dei dati su un foglio di Excel. La mia altra parte del programma genererà un ArrayList di oggetti e lo invierà a questo ciclo. Questo ciclo legge un oggetto dopo l'altro e scrive nel foglio Excel.O si scrive il primo record o Ultimo record della lista, qualche suggerimento per farlo bene

so che mi manca qualcosa. Scrive solo l'ultimo oggetto dalla lista.

Se provo mettendo questo codice all'interno del ciclo while:

FileOutputStream out = new FileOutputStream(writeExcel); 
     writeExtraBook.write(out); 
     out.close(); 

Poi si scrive solo il primo record del file.

qualcuno mi può aiutare in cui sto facendo male

Ecco il codice che scrive i dati:

String writeExcel = CONSTANTS.FOW_FILE_PATH; 

    FileInputStream writeInput; 
    try { 
     writeInput = new FileInputStream(writeExcel); 

     /** Create a POIFSFileSystem object **/ 
     POIFSFileSystem mywriteSystem = new POIFSFileSystem(writeInput); 
     HSSFWorkbook writeExtraBook = new HSSFWorkbook(mywriteSystem); 
     HSSFSheet myExtrasSheet = writeExtraBook.getSheet("FOW"); 
     HSSFRow extraRow = null; 
     HSSFCell extraRowCell = null; 
     int lastRowNumber = myExtrasSheet.getLastRowNum(); 

     Iterator<FoWForm> iter = fowList.iterator(); 
     while (iter.hasNext()) { 
      extraRow = myExtrasSheet.createRow(lastRowNumber + 1); 
      FoWForm form = iter.next(); 
      extraRowCell = extraRow.createCell(0); 
      extraRowCell.setCellValue(lastRowNumber + 1); 
      extraRowCell = extraRow.createCell(1); 
      extraRowCell.setCellValue(form.getFowDesc()); 
      extraRowCell = extraRow.createCell(2); 
      extraRowCell.setCellValue(form.getForCountry()); 
      extraRowCell = extraRow.createCell(3); 
      extraRowCell.setCellValue(form.getMatchId()); 
      extraRowCell = extraRow.createCell(4); 
      extraRowCell.setCellValue(form.getAgainstCountry()); 

     } 
     FileOutputStream out = new FileOutputStream(writeExcel); 
     writeExtraBook.write(out); 
     out.close(); 
    } catch (FileNotFoundException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

risposta

22

Ho il sospetto che questo è il problema:

int lastRowNumber = myExtrasSheet.getLastRowNum(); 
... 
while (iter.hasNext()) { 
    extraRow = myExtrasSheet.createRow(lastRowNumber + 1); 

Sei solo valutando lastRowNumber una volta - così su ogni iterazione, si sta chiamando createRow con lo stesso numero di riga nuova, che è presumibilmente sovrascrivendo la fila.

ho il sospetto che si desidera:

lastRowNumber++; 

all'interno del ciclo ...

+0

Super ha funzionato !!!! – gmhk

+28

@harigm: Allora perché hai eliminato il post? (E 'ora non eliminato ...) Quando hai fatto una domanda la cui risposta potrebbe aiutare gli altri, non vedo il motivo per cui ci si vuole eliminarlo ... –

+0

ho pensato che una domanda una volta risposto non può essere cancellato. è questo nuovo? – Baz1nga

Problemi correlati