2014-10-17 66 views
0

这是我的问题:如何将Excel文件中的单元格(字符串)值附加到JTextArea?

我尝试从Excel文件中循环的单元格中追加值。我用这部分代码:

Workbook workbook = new HSSFWorkbook(new FileInputStream(fileChooser.getSelectedFile())); 
      Sheet sheet = workbook.getSheetAt(0); 

      for(Iterator<Row> rit = sheet.rowIterator(); rit.hasNext();) 
      { 
       Row row = rit.next(); 

       for(Iterator<Cell> cit = row.cellIterator(); cit.hasNext();) 
       { 
        Cell cell = cit.next(); 


        cell.setCellType(Cell.CELL_TYPE_STRING); 

        while(cit.hasNext()) 
        { 
         notatnik.append(String.valueOf(cell.getSheet().toString()) + "\n"); 
        } 

       System.out.print(cell.getStringCellValue() + "\t");   
       } 
       System.out.println(); 
      } 

但它只是回来值“1”或“[email protected]”。在Excel中我举例如下: 1 SP25 kp 5 6.5等

我该怎么办,从Excel中取回这个值到JTextArea?

PS。我使用POI 3.10库。

回答

0

您正在使用迭代器有点乱......

迭代器应采用这种方式:

Iterator<Cell> cit = row.cellIterator(); // you get the iterator ... 

while (cit.hasNext()) { 
    // let't go cell by cell 
    Cell cell = cit.next(); 
    System.out.println(cell.getStringCellValue()); 
} 

不知道你为什么要打印出cell.getSheet()因为该值始终是相同(你在同一张纸上)...可能你正在寻找cell.getValue() ...或类似的东西

+0

谢谢,我试了一下。 Noo我只使用“System.print.put(...)”检查此方法是否工作:) – 2014-10-17 18:01:49

0

如果有人正在寻找答案(和我有同样的问题),这是代码的一部分从我的程序:

JFileChooser fileChooser = new JFileChooser(); 

     if(fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) 
     { 
      try 
      { 
       Workbook workbook = new HSSFWorkbook(new FileInputStream(fileChooser.getSelectedFile())); 
       Sheet sheet = workbook.getSheetAt(0); 

       for(Iterator<Row> rit = sheet.rowIterator(); rit.hasNext();) 
       { 
        Row row = rit.next(); 

        for(Iterator<Cell> cit = row.cellIterator(); cit.hasNext();) 
        { 
         Cell cell = cit.next(); 

         cell.setCellType(Cell.CELL_TYPE_STRING); 
         notatnik.append(cell.getStringCellValue() + "\t"); 
        } 
        notatnik.append("\n"); 
       } 
      } 
      catch (FileNotFoundException e1) 
      { 
       e1.printStackTrace(); 
      } 
      catch (IOException e2) 
      { 
       e2.printStackTrace(); 
      } 
     } 

这部分代码从excel文件中获取所有值并将它们粘贴到JTextArea中,名为“notatnik”。

相关问题