将excel的内容写入文本文件

时间:2015-04-27 16:11:39

标签: java excel list text

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

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

由于

1 个答案:

答案 0 :(得分:0)

似乎您不需要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代表List<Object>的行,可以轻松地逐行保存到文本文件中。为了获得更好的一致性,您还需要检查其他类型的单元格,例如Cell.CELL_TYPE_BOOLEANnull