Различия между xlwings и openpyxl Чтение книг Excel

В основном я использовал xlwings только для открытия (read-write) книг (поскольку книги, которые я читал, содержат сложные макросы). Но недавно я начал использовать openpyxl для открытия (read-only) книг, когда мне нужно было прочитать тысячи книг, чтобы очистить некоторые данные.

Я заметил, что существует значительная разница между тем, как xlwings и openpyxl читают книги. Я считаю, что xlwings полагается на pywin32, чтобы читать книги. Когда вы читаете книгу с xlwings.Book(<filename>), открывается настоящая книга. У меня такое ощущение, что это результат pywin32.

Однако при использовании openpyxl.load_workbook(<filename>) окно книги не появляется. У меня такое чувство, что это результат неиспользования pywin32.

Помимо этого, я больше не понимаю, как работают серверные части для каждой библиотеки. Может ли кто-нибудь пролить свет на это? Есть ли преимущества / затраты в использовании xlwings и pywin32 для чтения рабочих тетрадей, в отличие от openpyxl, который, похоже, не использует pywin32?


person Jon    schedule 10.10.2019    source источник


Ответы (1)


Вы правы в том, что xlwings полагается на _ 2_, а openpyxl - нет.

openpyxl

Файл Excel ".xlsx" по сути представляет собой zip-файл, содержащий несколько файлов XML, отформатированных в соответствии с спецификацией OOXML . С помощью этой спецификации можно создать программу, способную напрямую читать / записывать файлы Excel практически на любом языке программирования. Это подход, применяемый в openpyxl: он использует код Python для прямого чтения / записи файлов Excel.

xlwings

Приложение Microsoft Excel можно запустить и управлять с помощью внешней программы через Win32 COM API. Пакет pywin32 обеспечивает интерфейс между Win32 COM и Python. С помощью скрипта python с правильными командами pywin32 вы можете полностью управлять приложением Excel (открывать файлы Excel, запрашивать данные из ячеек, записывать данные в ячейки, сохранять файлы Excel и т. Д.). Команды pywin32, которые вы можете использовать, отражают команды Excel VBA, хотя и с синтаксисом Python.

xlwings - это (помимо прочего) удобная оболочка для pywin32. Он вводит несколько кратких, но эффективных методов. Примером могут служить методы прямого преобразования ячейки Excel. range до массива numpy или фрейма данных pandas (и наоборот).

Резюме

Принципиальное различие между xlwings и openpyxl состоит в том, что для первого требуется, чтобы на вашем компьютере был установлен MS Excel, а для второго - нет.

person Xukrao    schedule 10.10.2019
comment
Какой отличный ответ. Спасибо! - person Jon; 11.10.2019
comment
Я хотел бы добавить сюда, что openpyxl не имеет удобной поддержки для вычисления формул (см. здесь), если вам нужно прочитать или вычислить результаты формулы, в этом отношении проще использовать xlwings. Однако, что касается скорости, кажется, что openpyxl быстрее. Это мое личное впечатление. - person mouwsy; 31.01.2021
comment
Я предполагаю, что вы перевернули прежнее и позднее в своем последнем абзаце. - person jlandercy; 12.03.2021