code: public List<Map<String, Object>> read(int headerRowIndex, int startRowIndex, int endRowIndex) {
  		checkNotClosed();
  		// 边界判断
  		final int firstRowNum = sheet.getFirstRowNum();
  		final int lastRowNum = sheet.getLastRowNum();
  		if (headerRowIndex < firstRowNum) {
  			throw new IndexOutOfBoundsException(StrUtil.format("Header row index {} is lower than first row index {}.", headerRowIndex, firstRowNum));
  		} else if (headerRowIndex > lastRowNum) {
  			throw new IndexOutOfBoundsException(StrUtil.format("Header row index {} is greater than last row index {}.", headerRowIndex, firstRowNum));
  		}
  		startRowIndex = Math.max(startRowIndex, firstRowNum);// 读取起始行（包含）
  		endRowIndex = Math.min(endRowIndex, lastRowNum);// 读取结束行（包含）
  
  		// 读取header
  		List<Object> headerList = readRow(sheet.getRow(headerRowIndex));
  
  		final List<Map<String, Object>> result = new ArrayList<>(endRowIndex - startRowIndex + 1);
  		List<Object> rowList;
  		for (int i = startRowIndex; i <= endRowIndex; i++) {
  			if (i != headerRowIndex) {
  				// 跳过标题行
  				rowList = readRow(sheet.getRow(i));
  				if (CollUtil.isNotEmpty(rowList) || false == ignoreEmptyRow) {
  					if (null == rowList) {
  						rowList = new ArrayList<>(0);
  					}
  					result.add(IterUtil.toMap(aliasHeader(headerList), rowList, true));
  				}
  			}
  		}
  		return result;
  	}
docs: 读取Excel为Map的列表<br>
  Map表示一行，标题为key，单元格内容为value
  
  @param headerRowIndex 标题所在行，如果标题行在读取的内容行中间，这行做为数据将忽略
  @param startRowIndex 起始行（包含，从0开始计数）
  @param endRowIndex 读取结束行（包含，从0开始计数）
  @return Map的列表