code: public void process() throws ReadExcelException {
          try {
              ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(this.xlsxPackage);
              XSSFReader xssfReader = new XSSFReader(this.xlsxPackage);
              StylesTable styles = xssfReader.getStylesTable();
              XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData();
              while (iter.hasNext()) {
                  //初始化数据
                  this.initDataPerSheet();
                  InputStream stream = iter.next();
                  this.processSheet(styles, strings, this, stream);
                  stream.close();
              }
              //解析完后，判断用户是否设置了limit，若设置了执行以下操作
              if (this.limit > 0) {
                  if (!this.datas.isEmpty()) {
                      if (this.callback != null) {
                          //若数据不为空且回调函数被设置，则调用回调函数
                          this.callback.callback(this.currentRowInSheet, this.currentSheetInExcel, this.realRowInSheet,
                                  this.realRowInExcel, this.allSheetInExcel, this.titles, this.columns, this.datas);
                      }
                      this.datas.clear();
                  }
              }
          } catch (Exception e) {
              throw new ReadExcelException(e.getMessage());
          }
      }
docs: 开始解析Excel文档
  
  @throws ReadExcelException