def read_block(data, startrow):
    """
    The function returns a block of rows with some data in a row.
    A blank line separates the block.
    :param data: Data is a list of tuples, where each tuple represents a row.
     The element for tuple is Cell.
    :param startrow: Starting row, where function finding block.
    :return: Returns a list of lists. The inner list represents columns and the outer row list.
     Cell values are strings.
    """
    ret = []

    def convert(x):
        """
        Function that convert openpyxl Cell to readable value
        """
        if x.value is None:
            return ''
        return str(x.value).strip()

    empty = False
    rowidx = startrow
    starting = True
    heading = [convert(x) for x in data[startrow]]
    heading = [x for x in heading if len(x) > 0]
    columns = len(heading)
    sliced_data = [row[:columns] for row in data]
    for row in sliced_data[startrow:]:
        rowidx += 1
        row = [convert(x) for x in row]
        for c in row:
            if c:
                break
        else:
            if starting:
                continue
            # all values empty
            if empty:
                break
            empty = True
            continue
        ret.append(row)
        empty = False
        starting = False

    return ret, rowidx