2025-10-10 09:46:41 +02:00

60 lines
1.4 KiB
Python

"""
pyexcel.internal.common
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Definition for the shared objects
:copyright: (c) 2015-2025 by Onni Software Ltd.
:license: New BSD License
"""
NO_COLUMN_NAMES = "Only sheet with column names is accepted"
class SheetIterator:
"""
Sheet Iterator
"""
def __init__(self, bookreader):
self.book_reader_ref = bookreader
self.current = 0
def __iter__(self):
return self
def __next__(self):
return self.next()
def next(self):
"""get next sheet"""
if self.current < self.book_reader_ref.number_of_sheets():
self.current += 1
return self.book_reader_ref[self.current - 1]
raise StopIteration
def get_sheet_headers(sheet):
from pyexcel.internal.generators import SheetStream
if isinstance(sheet, SheetStream):
headers = next(sheet.payload)
else:
headers = sheet.colnames
if len(headers) == 0:
raise Exception(NO_COLUMN_NAMES)
return headers
def get_book_headers_in_array(book):
from pyexcel.internal.generators import BookStream
if isinstance(book, BookStream):
colnames_array = [next(sheet.payload) for sheet in book]
else:
for sheet in book:
if len(sheet.colnames) == 0:
sheet.name_columns_by_row(0)
colnames_array = [sheet.colnames for sheet in book]
return colnames_array