Подсчет количества печатных листов в xlsb файле через Python
Ломаю голову над задачей подсчета печатных листов в Excel файлах. Мне удалось разобраться с форматами xls,xlsx/xlsm. Но ни как не могу придумать, как подсчитать в бинарной книге(xlsb).
Для xlsx написал функцию, которая распаковывает файл и затем парсит xml, в котором содержится нужная информация.
def pages_count_xlsx_xlsm(document,unzip_dir_temp):
# Распаковываем excel документ
try:
with ZipFile(document, 'r') as zipObj:
zipObj.extractall(unzip_dir_temp)
except:
print('Error in file:',document)
# Список листов в книге
worksheets = glob.glob(unzip_dir_temp+'/xl/worksheets/*.xml')
# Извлекаем кол-во страниц на каждом листе
rowBreaks=0
colBreaks=0
pages_count=0
for i,sheet in enumerate(worksheets):
element_tree = ET.parse(sheet)
root = element_tree.getroot()
for type_tag in root.findall('{http://schemas.openxmlformats.org/spreadsheetml/2006/main}rowBreaks'):
rowBreaks = int(type_tag.get('count'))
for type_tag in root.findall('{http://schemas.openxmlformats.org/spreadsheetml/2006/main}colBreaks'):
colBreaks = int(type_tag.get('count'))
pages_count+= (rowBreaks + 1) * (colBreaks + 1)
# Удаляем временную директорию
shutil.rmtree(unzip_dir_temp)
return pages_count
Файл xlsb тоже можно распаковать, но вместо xml файлов там, соответственно, бинарные файлы. Может ли кто- нибудь подсказать, как прочитать бинарный файл, или подсказать библиотеку, которая может извлечь метаданные из файла xlsb. Спасибо!