plz.py: Adjust for .xlsx

This commit is contained in:
2024-09-18 11:33:52 +02:00
parent 86c3235782
commit d791fba02c

View File

@ -5,7 +5,7 @@ from typing import List, Tuple, Callable
import argparse import argparse
import requests import requests
import re import re
import xlrd import openpyxl
import tempfile import tempfile
import os import os
import zipfile import zipfile
@ -92,7 +92,7 @@ def get_plz_url(button: re.Pattern) -> str:
def download_excel(url: str, transform: Callable[[List[str]], Tuple]) -> List: def download_excel(url: str, transform: Callable[[List[str]], Tuple]) -> List:
f_name = None f_name = None
try: try:
f = tempfile.NamedTemporaryFile(delete=False) f = tempfile.NamedTemporaryFile(suffix='.xlsx', delete=False)
with requests.get(url, stream=True, headers={'User-Agent': 'Mozilla/5.0'}) as r: with requests.get(url, stream=True, headers={'User-Agent': 'Mozilla/5.0'}) as r:
if r.status_code != 200: if r.status_code != 200:
raise RuntimeError(f'Unexpected response: {r.status_code} {r.reason}') raise RuntimeError(f'Unexpected response: {r.status_code} {r.reason}')
@ -102,11 +102,14 @@ def download_excel(url: str, transform: Callable[[List[str]], Tuple]) -> List:
f.close() f.close()
rows = [] rows = []
wb = xlrd.open_workbook(f_name) wb = openpyxl.open(f_name)
sheet = wb.sheet_by_index(0) sheet = wb.worksheets[0]
for r in range(1, sheet.nrows): first = True
row = sheet.row_values(r) for row in sheet.rows:
rows.append(transform(row)) if first:
first = False
continue
rows.append(transform([r.value for r in row]))
return rows return rows
finally: finally:
if f_name is not None: if f_name is not None: