code: public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String sOpDirectory) {
          logger.entering(new Object[] { xmlSuites, suites, sOpDirectory });
          if (ListenerManager.isCurrentMethodSkipped(this)) {
              logger.exiting(ListenerManager.THREAD_EXCLUSION_MSG);
              return;
          }
  
          if (logger.isLoggable(Level.INFO)) {
              logger.log(Level.INFO, "Generating ExcelReport");
          }
  
          TestCaseResult.setOutputDirectory(sOpDirectory);
  
          // Generate data to suit excel report.
          this.generateSummaryData(suites);
          this.generateTCBasedData(allTestsResults);
  
          // Create the Excel Report
          this.createExcelReport();
  
          // Render the report
          Path p = Paths.get(sOpDirectory, reportFileName);
  
          try {
              Path opDirectory = Paths.get(sOpDirectory);
              if (!Files.exists(opDirectory)) {
                  Files.createDirectories(Paths.get(sOpDirectory));
              }
  
              FileOutputStream fOut = new FileOutputStream(p.toFile());
              wb.write(fOut);
              fOut.flush();
          } catch (IOException e) {
              logger.log(Level.SEVERE, e.getMessage(), e);
          }
  
          if (logger.isLoggable(Level.INFO)) {
              logger.log(Level.INFO, "Excel File Created @ " + p.toAbsolutePath().toString());
          }
      }
docs: The first method that gets called when generating the report. Generates data in way the Excel should appear.
  Creates the Excel Report and writes it to a file.