code: @SneakyThrows @SuppressWarnings("unchecked")
      private void processExcelRowsAnnotation(Field field, Object bean) {
          val excelRows = field.getAnnotation(ExcelRows.class);
          if (excelRows == null) return;
  
          if (!Generic.of(field.getGenericType()).isRawType(List.class)) return;
  
          val templateCell = findTemplateCell(excelRows);
          if (templateCell == null) {
              log.warn("unable to locate template cell for field {}", field);
              return; // 找不到模板单元格，直接忽略字段处理。
          }
  
          val list = (List<Object>) Fields.invokeField(field, bean);
          val itemSize = PoiUtil.shiftRows(sheet, list, templateCell.getRowIndex());
          if (itemSize > 0) {
              writeRows(templateCell, list);
              mergeRows(excelRows, templateCell, itemSize);
              mergeCols(excelRows, templateCell, itemSize);
          }
      }
docs: 处理@ExcelRows注解的属性。
  
  @param field JavaBean反射字段。
  @param bean  字段所在的JavaBean。