Добрый день! Самоучусь разработке. Для прикладной задачи (искал решение срочно) нашёл
здесь нужный код:
import os
import pandas as pd # 1.2.1
import xlrd as xr
import xlwt as xw # Don't touch this!
data_source = [file
for file in os.listdir()
if file.endswith('.xlsx')]
if len(data_source) <= 1:
raise SystemExit
print(f'Обрабатываю {data_source[0]} и {data_source[1]}.')
one_excel_reed = xr.open_workbook(data_source[0])
one_excel = one_excel_reed.sheet_by_index(0)
two_excel_reed = xr.open_workbook(data_source[1])
two_excel = two_excel_reed.sheet_by_index(0)
list_j = []
for i in range(1, one_excel.nrows):
for j in range(1, two_excel.nrows):
if two_excel.row_values(j)[0] == one_excel.row_values(i)[0]:
list_j.append(one_excel.row_values(i)[:6] + two_excel.row_values(j)[:6])
df = pd.DataFrame(list_j)
df.to_excel('output.xlsx', header=False, index=False)
print('Обработка заврешена.')
input('Нажмите любую клавишу...')
В Jupiter Notebook (6.0.3; anaconda 3) код работает замечательно. А в PyCharm (2020.3.3; venv) - отказывается переваривать xlsx. И обнаружил я это поздно. Скрипт падает с ошибкой "xlrd.biffh.XLRDError: Excel xlsx file; not supported". С xls работает, но с предупреждением:
spoilermain.py:25: FutureWarning: As the xlwt package is no longer maintained, the xlwt engine will be removed in a future version of pandas. This is the only engine in pandas that supports writing in the xls format. Install openpyxl and write to an xlsx file instead. You can set the option io.excel.xls.writer to 'xlwt' to silence this warning. While this option is deprecated and will also raise a warning, it can be globally set and the warning suppressed.
df.to_excel('output.xlsx', header=False, index=False)
Я понял, что библиотека устарела. Но почему код без ошибок и предупреждений работает в Jupiter? Как можно заставить его работать в PyCharm? Это нужно, чтобы скрипт обернуть в exe для демонстрации mvp. После перепишу на openpyxl (когда научусь). Поможет любая дополнительная информация.