2012-04-07 16 views
0

Ich schaffte es, die Daten in eine einzige Spalte zu schreiben. Meine Anforderung besteht darin, die Daten in die nächste benachbarte Spalte zu schreiben, ohne die Daten in der ersten Spalte zu überschreiben. Irgendwelche Hilfe?Exportieren Sie die Daten mit Apache Poi?

InputStream inp; 
    try { 
     inp = new FileInputStream("D:\\test.xls"); 
     Workbook wb = WorkbookFactory.create(inp); 
     Sheet sheet = wb.getSheetAt(0); 
     Row row = null; 

     Cell c = null; 

     int rowNum=0; 
     Set<String> keySet = new HashSet<String>(); 
     keySet = tushMap.keySet(); 
     for (Entry<String, String> entry : tushMap.entrySet()) { 
      row=sheet.createRow((short) (sheet.getLastRowNum() + 1)); 
      System.out.println((short) (sheet.getLastRowNum() + 1)); 
      c = row.createCell(0); 
      c.setCellValue("fff"); 
      System.out.println("fff"); 
      System.out.println(entry.getKey() + "/" + entry.getValue()); 
      rowNum++; 
     } 


     FileOutputStream fileOut = new FileOutputStream("D:\\test.xls"); 
     wb.write(fileOut); 
     fileOut.close(); 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (InvalidFormatException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

Dies ist der Code, der zum Füllen der ersten Spalte geschrieben wird. Füllen der zweiten Spalte überschreibt die erste 1 .. Pls schlagen einige Lösung .. Vielen Dank im Voraus.

Antwort

1

Um die Daten nebeneinander zu bekommen, holen Sie sich die letzte Zeile außerhalb der Schleife und speichern Sie sie als die sich ändernde Zeile. Behalten Sie einen Zähler für die Zeile, die Sie in der Schleife bearbeiten. Wenn die Zeile null ist, erstellen Sie die Zeile.

rowPos = sheet.getLastRowNum(); 
for (Entry<String, String> entry : tushMap.entrySet()) { 
    rowPos++; 
    Row currentRow = sheet.getRow(rowPos); 
    if(null == currentRow) 
     currentRow = createRow(rowPos); 

EDIT:

Ich erhalte die desierd Ausgabe mit diesen

int beginingRow = sheet.getLastRowNum(); 
      for(int col=0; col<2; col++){ 
       int currentRow = beginingRow; 
       for (int i=0; i<10; i++) { 
        currentRow++; 
        row = sheet.getRow(currentRow); 
        if(null == row) 
         row=sheet.createRow(currentRow); 
        c = row.createCell(col); 
        c.setCellValue("fff"); 
        System.out.println("fff"); 
        //System.out.println(entry.getKey() + "/" + entry.getValue()); 
        rowNum++; 
       } 
      } 

Ausgabe

fff fff 
fff fff 
fff fff 
fff fff 
fff fff 
fff fff 
fff fff 
fff fff 
fff fff 
fff fff 
+0

tat that..also geändert sheet.getLastRowNum() + 1 Blatt .getFirstRowNum() + 1 (+1, um die Spaltenüberschriften zu überspringen) –

+0

Hat die Bearbeitungshilfe geholfen? –

+0

Danke Nitin, die geholfen hat :) –