Различия между xlwings и openpyxl для чтения книг Excel - PullRequest
1 голос
/ 10 октября 2019

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

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

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

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

1 Ответ

3 голосов
/ 11 октября 2019

Вы правы в том, что xlwings полагается на pywin32, тогда как openpyxl не делает.

openpyxl

Файл Excel ".xlsx", по сути, представляет собой zip-файл, содержащий несколько файлов XML, отформатированных в соответствии со спецификацией Microsoft 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 в массив данных или массив данных pandas (и наоборот).

Сводка

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

...