A generator function cannot return out-of-band data like this.
I'd use a class instead, as an instance gives you something to stick such extra state:
class XLSParser(object):
def __init__(self, limit):
self.error_list = []
self.limit = limit
def __iter__(self):
for x in range(self.limit):
if x%2: #fake error condition
self.error_list.append(x)
else:
yield(x*x) #return
and iterate over that object:
parser = XLSParser(limit)
for result in parser:
# do something
errors = parser.error_list