getAllMergedCells method

List<String> getAllMergedCells(
  1. String fromCol,
  2. String toCol
)

Implementation

List<String> getAllMergedCells(String fromCol, String toCol) {
  List<String> mergedCells = [];
  String from = fromCol.replaceAll(RegExp(r"\d"), "");
  String to = toCol.replaceAll(RegExp(r"\d"), "");
  String latestCol = "";
  String rowNum = fromCol.replaceAll(from, "");
  int cycleCount = 0;

  String fromLastChar = from.substring(from.length - 1);
  String fromPrevChar = "";
  if (from.length > 1) {
    fromPrevChar = from.substring(0, from.length - 1);
  }
  int indexOfLastChar = Alphabet.alphabets.indexOf(fromLastChar);
  while (latestCol != to) {
    for (int i = indexOfLastChar + 1; i < Alphabet.alphabets.length; i++) {
      latestCol = fromPrevChar + Alphabet.alphabets[i];
      mergedCells.add(latestCol + rowNum);
      if (latestCol == to) {
        break;
      }
    }
    if (latestCol != to) {
      if (fromPrevChar.isNotEmpty) {
        if (fromPrevChar.substring(fromPrevChar.length - 1) != Alphabet.alphabets.last) {
          fromPrevChar = fromPrevChar.substring(0, fromPrevChar.length - 1) +
              Alphabet.alphabets.elementAt(Alphabet.alphabets.indexOf(fromPrevChar.substring(fromPrevChar.length - 1)) + 1);
        }
      } else {
        fromPrevChar = Alphabet.alphabets.first;
        indexOfLastChar = -1;
      }
    }
    cycleCount++;
    if (cycleCount == 10) {
      break;
    }
  }
  return mergedCells;
}