Как и многим людям, мне нужно читать как файлы .xls (я называю их S-файлами, используя xlrd), так и .xlsx-файлами (файлы X, используя openpyxl), в обоих случаях файлы размером около 30 000 строк. И в обоих случаях я просто копирую все данные Excel, считанные в файл .csv, никакой другой обработки, а только ввод / вывод.
Но операции с файлом X более чем в 200 раз медленнее, чем для .xls, например, чтение файла .xlsx с 30 000 строками теперь занимает 2 минуты по сравнению с 1/2 секунды для .xls с xlrd. У нас есть тысячи файлов для обработки, поэтому время каждого файла имеет значение.
Является ли openpyxl намного медленнее, или мне нужно что-то сделать, например, освободить какой-то ресурс в конце каждой строки?
Кстати, я сделал несколько больших улучшений, используя read_only = True и читая строку за раз, а не ячейку за ячейкой, как показано в следующем фрагменте кода. Спасибо blog.davep.org https://blog.davep.org/2018/06/02/a_little_speed_issue_with_openpyxl.html
wb = openpyxl.load_workbook("excel_file.xlsx", data_only=True, read_only=True)
sheet = wb.active
for row in sheet.rows:
for cell in row:
cell_from_excel = cell.value