require(XLConnect)

xls.pat <- "\\.xls(x)?$"

## CSV Files being used
files <- dir(dataDir)
files <- grep(xls.pat, files, value=TRUE)

## opened excel files create wierd hidden files
drop <- grepl("^\\~\\$", files)
files <- files[!drop]

startRow <- 3 #0
dropZeroRowSheets <- TRUE

### --- BEGIN --- ###

  DT.nestedlist <- list()
  for (i in seq_along(files)) {

    verboseMsg(verbose, "PROCEESSING  \'", files[[i]], "\' ", sep="", endl=0)

    # Band & File info for current itteration
    fn       <- files[[i]]  # filename
    xlsfile  <- as.path(dataDir, fn, expand=TRUE) 

    wb <- loadWorkbook(xlsfile)

    # grab the sheets, dropping any hidden ones. 
    sheets <- getSheets(wb)
    sheetsToKeep <- sapply(sheets, isSheetVisible, object=wb)
    sheets <- sheets[sheetsToKeep]

    ## Drop the summary sheet
    pat.drop <- paste(month.abb, "\\d\\d")
    sheetsToKeep <- sapply(sheets, function(s) !any(sapply(pat.drop, grepl, s, ignore.case=TRUE)))
    sheets <- sheets[sheetsToKeep]

    # drop sheets with no rows
    if (dropZeroRowSheets) {
      lastRows <- sapply(sheets, function(s) getLastRow(wb, s))
      verboseMsg(verbose, paste0(names(sheets), collapse=" "), time=FALSE)
      verboseMsg(verbose, setw(lastRows, 2), "\t", "B: ", length(sheets), "\t", time=FALSE, endl=0)
      sheets <- sheets[lastRows > startRow]
#      sheets <- sheets[sapply(sheets, function(s) getLastRow(wb, s)) > startRow]
      verboseMsg(verbose, "A: ", length(sheets), time=FALSE)
    }

    if (!length(sheets)) {
      warning("No valid sheets to import for  \"", basename(xlsfile), "\"")
      next
    }

    setattr(sheets, "names", sheets)
    # read in the xls file, by sheet 
    xlData <- 
      lapply(sheets, function(s) 
        as.data.table(readWorksheet(wb, sheet=s, startRow=startRow)))

    nm <- gsub(xls.pat, "", fn)
    DT.nestedlist[[nm]] <- xlData
 }


 # ---------- # 
 