如何将Excel文件中的单元格(String)值附加到JTextArea?

时间:2014-10-17 17:18:29

标签: java 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();
            }

但它只有回归价值&#34; 1&#34;或&#34; org.apache.poi.hssf.usermodel.HSSFSheet@6325a3ee"。在excel我有例如值: 1 SP25 kp 5 6.5等。

如何将此值从Excel恢复到JTextArea?

PS。我使用POI 3.10库。

2 个答案:

答案 0 :(得分: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() ...或类似的东西

答案 1 :(得分: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”。