将excel的内容写入文本文件

我需要读取一个excel文件的内容并将其转储到文本文件中。 我能够从文件中读取内容。 我创build了一个List excelData = new ArrayList(); 它应该包含Excel表格中的行数据。 但每列都是不同的数据types。 如何将内容保存到列表中?

 List excelData = new ArrayList(); try { FileInputStream file = new FileInputStream(new File("H:\\Docs\\Medical Data Record\\MedicalRecord2015.xlsx")); XSSFWorkbook wb = new XSSFWorkbook(file); XSSFSheet ws = wb.getSheetAt(0); Iterator<Row> itr = ws.iterator(); while (itr.hasNext()) { Row row = itr.next(); Iterator<Cell> itrCell = row.cellIterator(); while (itrCell.hasNext()) { Cell cell = itrCell.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: double val = cell.getNumericCellValue(); break; case Cell.CELL_TYPE_STRING: String txtval = cell.getStringCellValue(); break; } } } 

谢谢

似乎你不需要List ,但List<List<Object>>在这里:

 List<List<Object>> excelData = new ArrayList<>(); try { //... while (itr.hasNext()) { Row row = itr.next(); List<Object> dataRow = new ArrayList<>(); excelData.add(dataRow); Iterator<Cell> itrCell = row.cellIterator(); while (itrCell.hasNext()) { Cell cell = itrCell.next(); if (cell == null) { dataRow.add(null); continue; } switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: dataRow.add(cell.getNumericCellValue()); break; case Cell.CELL_TYPE_STRING: dataRow.add(cell.getStringCellValue()); break; case Cell.CELL_TYPE_BOOLEAN: dataRow.add(cell.getBooleanCellValue()); break; case Cell.CELL_TYPE_BLANK: dataRow.add(""); break; default: dataRow.add(cell); } } } 

现在, excelData包含表示为List<Object>的行的List<Object> ,并且可以容易地将行保存到文本文件中。 为了获得更好的一致性,还需要检查其他types的单元格,如Cell.CELL_TYPE_BOOLEANnull