有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Apache poi如何将工作表设置为枚举位置值属性?

我正在迭代工作簿,从多个工作表中读取数据,并使用下面的代码合并同一个表中的所有行

  public boolean readDataFromExcel(MultipartFile file) {
    Workbook workbook = getWorkBook(file);

    for (int i = 0 ; i < workbook.getNumberOfSheets(); i++) {
      Sheet mySheet = workbook.getSheetAt(i);

      Iterator<Row> rows = mySheet.iterator();
      rows.next();
      while (rows.hasNext()) {
        Row row = rows.next();
        if (isRowEmpty(row)) {
          continue;
        }

       getItemCellValue(row, file, workbook);

      }
    }
    return true;
  }

getItemCellValue方法获取单元格类型并将其设置为相应的属性

  private boolean getItemCellValue(Row row, MultipartFile file, Workbook workbook) {
   try {
      if (row.getCell(0).getCellType() == Cell.CELL_TYPE_NUMERIC) {
        item.setItemNumber((float) row.getCell(0).getNumericCellValue());
      }

      if (row.getCell(1).getCellType() == Cell.CELL_TYPE_NUMERIC) {
          item.setHeight(row.getCell(1).getNumericCellValue());
      } if (row.getCell(15).getCellType() == Cell.CELL_TYPE_STRING) {
        item.setItemDesc(row.getCell(15).getStringCellValue());
      }
      itemRepository.save(item);
   } catch (NullPointerException e) {
      e.printStackTrace();
    }
      return true;
}

例如,我有一个映射到两个位置的枚举属性(位置),我的输入文件应该有两个不同的工作表(选项卡)。这里的目标是设置从图纸中读取和解析项目的位置

例如,如果我有两张工作表,并且从sheet1解析item1,从sheet2解析item2,那么应该设置位置字段以显示项目行退出的正确位置(在这种情况下为sheet1或sheet2)

| item.      | itemNo.     | location     |
|:-----------|------------:|:------------:|
| item1      |    1111     |  LOCATION1   |
| item2      |    2222     |  LOCATION2   |

解决方案可能是检测每行所属的工作表并在其中设置位置,但我在APACHE POI中找不到任何返回该位置的内容


共 (0) 个答案