added openpyxl support
This commit is contained in:
42
main.py
42
main.py
@@ -13,6 +13,7 @@ from requests.structures import CaseInsensitiveDict
|
||||
from bs4 import BeautifulSoup
|
||||
import aigenerated
|
||||
import parser
|
||||
import translations
|
||||
import utils
|
||||
import json
|
||||
# Общее правило проекта, сначала в координатах идёт ROW а потом COL, нумерация с нуля
|
||||
@@ -76,41 +77,16 @@ for facultet in FACULTETS:
|
||||
counter += 1
|
||||
print(f"\n\n-- Ссылка --")
|
||||
print(f"{excel_url}")
|
||||
xlsx = excel_url.endswith(".xlsx")
|
||||
is_xlsx = excel_url.endswith(".xlsx")
|
||||
|
||||
try:
|
||||
filename = "excels/" + facultet + filestime + f"[C{counter}]" + ".xls"
|
||||
filename = "excels/" + facultet + filestime + f"[C{counter}]" + ".xls" + ("x" if is_xlsx else "")
|
||||
aigenerated.download_file_from_url(excel_url, filename)
|
||||
|
||||
# Download a file
|
||||
if not xlsx:
|
||||
aigenerated.download_file_from_url(excel_url, filename)
|
||||
else:
|
||||
aigenerated.download_file_from_url(excel_url, filename+"x")
|
||||
|
||||
excel_file = pd.ExcelFile(filename + "x")
|
||||
|
||||
# Создаем "писателя" для формата .xls с помощью движка xlwt
|
||||
# Использование 'with' гарантирует, что файл будет корректно сохранен и закрыт
|
||||
with pd.ExcelWriter(filename, engine='xlwt') as writer:
|
||||
print("Начинаю конвертацию...")
|
||||
# Проходим по каждому листу в исходном файле
|
||||
for sheet_name in excel_file.sheet_names:
|
||||
print(f" - Обрабатываю лист: {sheet_name}")
|
||||
# Читаем лист в DataFrame
|
||||
df = excel_file.parse(sheet_name)
|
||||
# Записываем этот DataFrame в новый .xls файл с тем же именем листа
|
||||
# index=False чтобы не добавлять лишнюю колонку с индексами pandas
|
||||
df.to_excel(writer, sheet_name=sheet_name, index=False)
|
||||
|
||||
print(f"✅ Успешно! Файл конвертирован как: {filename}")
|
||||
|
||||
book = xlrd.open_workbook(filename, formatting_info=True)
|
||||
print("The number of worksheets is {0}".format(book.nsheets))
|
||||
print("Worksheet name(s): {0}".format(book.sheet_names()))
|
||||
sh = book.sheet_by_index(0)
|
||||
reader = translations.create_reader(filename)
|
||||
|
||||
parser.LOGGING = False
|
||||
prs = parser.Parser(sh)
|
||||
prs = parser.Parser(reader)
|
||||
prs.parse()
|
||||
for group_name in prs.groups.keys():
|
||||
if group_name in result.keys():
|
||||
@@ -119,15 +95,17 @@ for facultet in FACULTETS:
|
||||
|
||||
gr = result[group_name] = prs.groups[group_name]
|
||||
gr['facultet'] = facultet
|
||||
gr['data_source'] = excel_url.split("/")[-1] + " SHEET: " + str(sh.name)
|
||||
gr['data_source'] = excel_url.split("/")[-1]
|
||||
gr['parser_debug'] = {
|
||||
"C_COUNTER": counter,
|
||||
"timestime": filestime,
|
||||
"excel_url": excel_url,
|
||||
"sheet": sh.name,
|
||||
"reader_info": reader.info(),
|
||||
"filename": filename
|
||||
}
|
||||
|
||||
print(f"Populates {len(prs.groups)} groups to result")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error while {excel_url}")
|
||||
print(e)
|
||||
|
||||
Reference in New Issue
Block a user