2012-04-07 63 views
0

我设法将数据写入单个列。 我的要求是将数据写入下一个相邻列,而不会覆盖第一列中的数据。 有什么帮助吗?使用apache poi将数据导出到excel表栏明智吗?

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(); 
    } 

这是写入填充第1列的代码。 填充第二列覆盖拳头1 .. PLS提出一些解决方案.. 预先感谢。

回答

1

要并排获取数据,请获取循环外的最后一行并将其保存为循环行。在循环内保留一个计数器,用于编辑哪一行。如果该行为空,则创建该行。

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

编辑:

我正在使用该

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++; 
       } 
      } 

输出

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

做过desierd输出that..also改变sheet.getLastRowNum()+ 1到片.getFirstRowNum()+1(+1以跳过列标题) – 2012-04-07 08:20:15

+0

编辑是否有帮助? – 2012-04-07 08:31:33

+0

谢谢尼廷,帮助:) – 2012-04-07 11:42:57