这是我的问题:
我尝试从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库。
答案 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”。