docs: def excel():
      """
      Convert Excel files to LiPD files. LiPD data is returned directly from this function.
  
      | Example
      | 1: lipd.readExcel()
      | 2: D = lipd.excel()
  
      :return dict _d: Metadata
      """
      global files, cwd, settings
      _d = {}
      # Turn off verbose. We don't want to clutter the console with extra reading/writing output statements
      settings["verbose"] = False
      # Find excel files
      print("Found " + str(len(files[".xls"])) + " Excel files")
      logger_start.info("found excel files: {}".format(len(files[".xls"])))
      # Start the clock
      start = clock()
      # Loop for each excel file
      for file in files[".xls"]:
          # Convert excel file to LiPD
          dsn = excel_main(file)
          try:
              # Read the new LiPD file back in, to get fixes, inferred calculations, updates, etc.
              _d[dsn] = readLipd(os.path.join(file["dir"], dsn + ".lpd"))
              # Write the modified LiPD file back out again.
              writeLipd(_d[dsn], cwd)
          except Exception as e:
              logger_start.error("excel: Unable to read new LiPD file, {}".format(e))
              print("Error: Unable to read new LiPD file: {}, {}".format(dsn, e))
      # Time!
      end = clock()
      logger_benchmark.info(log_benchmark("excel", start, end))
      # Start printing stuff again.
      settings["verbose"] = True
      return _d