parameters: (cell_str)
return_statement: return row, col
docstring: Convert a cell reference in A1 notation to a zero indexed row and column.
  
      Args:
         cell_str:  A1 style string.
  
      Returns:
          row, col: Zero indexed cell row and column indices.
docstring_summary: Convert a cell reference in A1 notation to a zero indexed row and column.
docstring_tokens: Convert a cell reference in A1 notation to a zero indexed row and column .
function: def xl_cell_to_rowcol(cell_str):
      """
      Convert a cell reference in A1 notation to a zero indexed row and column.
  
      Args:
         cell_str:  A1 style string.
  
      Returns:
          row, col: Zero indexed cell row and column indices.
  
      """
      if not cell_str:
          return 0, 0
  
      match = range_parts.match(cell_str)
      col_str = match.group(2)
      row_str = match.group(4)
  
      # Convert base26 column string to number.
      expn = 0
      col = 0
      for char in reversed(col_str):
          col += (ord(char) - ord('A') + 1) * (26 ** expn)
          expn += 1
  
      # Convert 1-index to zero-index
      row = int(row_str) - 1
      col -= 1
  
      return row, col
function_tokens: def xl_cell_to_rowcol ( cell_str ) : if not cell_str : return 0 , 0 match = range_parts . match ( cell_str ) col_str = match . group ( 2 ) row_str = match . group ( 4 ) # Convert base26 column string to number. expn = 0 col = 0 for char in reversed ( col_str ) : col += ( ord ( char ) - ord ( 'A' ) + 1 ) * ( 26 ** expn ) expn += 1 # Convert 1-index to zero-index row = int ( row_str ) - 1 col -= 1 return row , col