Перенос таблицы из excel в word python
Используйте OpenPyXL для обработки таблиц Excel в Python
Несколько обычных библиотек для обработки таблиц Excel с помощью Python:
- xlrd используется для чтения
- xlwt используется для записи
- xlutils используется для копирования, фильтрации и других операций с файлами документов.
Эти библиотеки не так мощны, как OpenPyXL. OpenPyXL может читать и записывать файлы Excel 2010+ xlsx xlsm xltx xltm. Однако библиотека OpenPyXL также потребляет больше памяти, примерно в 5 раз больше, чем исходный файл. Например, для работы файла Excel размером 50 МБ требуется 2,5 ГБ памяти. Для сравнения производительности вышеуказанных библиотек перейдите к тесту производительности OpenPyXL.
установка
Введите команду в терминале следующим образом:
Когда openpyxl сохраняет таблицу Excel, изображения и диаграммы исходного файла будут потеряны. Если вы хотите манипулировать изображениями, вам понадобится библиотека подушек, которая устанавливается следующим образом:
Поскольку недавние военные игры будут проводиться в рамках Небесной династии, для установки его необходимо перекрыть стеной.
Группа изучения Python: 556370268, есть эксперты, которые ответят на вопросы и поделятся ресурсами! Те, кто хочет изучить программирование на Python или сменить карьеру, или студенты колледжей, и те, кто хочет улучшить свои способности на работе, могут присоединиться к обучению.
инструкции
Новая таблица Excel
Создайте новую таблицу Excel, по умолчанию это таблица с именем Sheet, а именно:
Открыть существующую таблицу Excel
Управляйте существующей таблицей Excel следующим образом:
Создать / получить лист
Используйте метод Workbook.create_sheet () для создания нового листа. Первый параметр - это имя листа. Если он не заполнен, по умолчанию он будет называться Sheet1 Sheet2 Sheet3; второй параметр - это позиция для вставки таблицы Sheet, с 0 в качестве первой позиции, если она не заполнена, она будет В конце концов. следующее:
Вы также можете изменить имя листа в любое время позже, следующим образом:
Измените цвет метки листа следующим образом:
Если вы знаете название листа, вы можете получить лист следующим образом:
Вы также можете получить имена всех листов и просмотреть имена листов следующим образом:
Копировать лист
Можно копировать только значения ячеек, стили, гиперссылки, блоки комментариев и т. Д., В то время как изображения и таблицы копировать нельзя, как показано ниже:
Операционная ячейка
Получите ячейку с листа или назначьте ячейку напрямую, как показано ниже:
Получите клетки в этом районе следующим образом:
Получите данные построчно, как показано ниже:
Получите данные один за другим, как показано ниже:
По соображениям производительности метод Worksheet.iter_cols () нельзя использовать в режиме только для чтения.
Получите все столбцы или строки следующим образом:
По соображениям производительности метод Worksheet.columns нельзя использовать в режиме только для чтения.
Если вы хотите получить значения только из рабочего листа, вы можете использовать свойство Worksheet.values следующим образом:
Оба метода Worksheet.iter_rows () и Worksheet.iter_cols () могут добавлять параметры values_only для достижения цели получения только значений, как показано ниже:
Если у вас есть ячейка, вы можете присвоить значение следующим образом:
сохранить документ
Используйте метод Workbook.save () для сохранения книги, этот метод перезапишет исходный файл без запроса, как показано ниже:
Получить тип ячейки
Использовать формулу
Объединить ячейки
Вставить картинку
Нужна библиотека подушек, установите следующим образом:
Скрытая ячейка
Режим оптимизации
Группа изучения Python: 556370268, есть эксперты, которые ответят на вопросы и поделятся ресурсами! Те, кто хочет изучить программирование на Python или сменить карьеру, или студенты колледжей, и те, кто хочет улучшить свои способности на работе, могут присоединиться к обучению.
Режим только для чтения
Режим только записи
- В отличие от обычных книг, вновь созданная книга, предназначенная только для записи, не содержит рабочих листов; вы должны использовать метод create_sheet (), чтобы специально создавать рабочие листы.
- В книге только для записи вы можете использовать append () только для добавления строк. Использование cell () или iter_rows () для записи (или чтения) ячеек в любой позиции невозможно.
- Он может экспортировать неограниченное количество данных (даже больше, чем в действительности может обработать Excel), сохраняя при этом использование памяти ниже 10 МБ.
Вставка / удаление строк / столбцов, перемещение ячеек области
Вставить строку / столбец
Вставьте строку над строкой 7 следующим образом:
Вставьте столбец слева от столбца 7 следующим образом:
Удалить строку / столбец
Начиная со столбца 6, удалите 3 столбца, то есть столбцы 6, 7 и 8, следующим образом:
Переместить ячейку области
Переместите область D4: F10 на одну строку вверх на 2 столбца вправо следующим образом:
Если область содержит формулу, вместе с формулой можно перемещать следующие методы:
Используйте Pandas и NumPy
Для получения подробной информации перейдите наWorking with Pandas and NumPy
диаграмма
Диаграмма состоит как минимум из одной серии из одной или нескольких точек данных диапазона ячеек. Для получения дополнительной информации см. Введение в диаграмму.
Комментарий
openpyxl может читать / писать комментарии, но информация о формате будет потеряна. Комментарии к операциям не поддерживаются в режиме только для чтения. Комментарии должны включать содержание и автора.
Прочтите примечания следующим образом:
Делайте заметки следующим образом:
Стиль таблицы
Стиль шрифта
Название шрифта, размер шрифта, цвет шрифта, полужирный, курсив, вертикальное выравнивание (всего три: базовая линия, верхний индекс, нижний индекс), подчеркивание, зачеркивание, как показано ниже:
Цвет шрифта может быть RGB или aRGB следующим образом:
Наследуйте и перепишите стиль следующим образом:
Стиль заливки
Для получения подробной информации перейдите к стилю заливки
Стиль границы
Для получения подробной информации перейдите к стилю границы
Стиль выравнивания
Значения по горизонтали: распределенный, выравнивание, центр, левый, заливка, центр, непрерывный, правый, общий.
Значения по вертикали: снизу, распределены, выравнивать, по центру, сверху.
Стиль защиты
Применить стили ко всем строкам или столбцам
Изменить стиль объединенных ячеек
Объединенной ячейкой можно управлять как ячейкой в верхнем левом углу.
Фильтр и сортировка
Сгенерированная таблица Excel имеет операции фильтрации и сортировки, но на самом деле не показывает эффекта, как показано на следующем рисунке:
Вам нужно вручную щелкнуть Rewrite Application, чтобы отобразить эффект, как показано на рисунке ниже:
защита паролем
Эта функция может обеспечить только очень простую защиту паролем, без обработки шифрования обычное программное обеспечение для онлайн-взлома может взломать пароль. Тем не менее, ежедневное использование все же возможно.
Эта функция может использоваться только для создания новой таблицы Excel, но не существующей таблицы Excel.
защита книги
Предотвращайте просмотр скрытых листов, избегайте добавления, перемещения, удаления, скрытия или переименования листов и т. Д., Чтобы защитить структуру книги следующим образом:
Группа изучения Python: 556370268, есть эксперты, которые ответят на вопросы и поделятся ресурсами! Те, кто хочет изучить программирование на Python или сменить карьеру, или студенты колледжей, и те, кто хочет улучшить свои способности на работе, могут присоединиться к обучению.
В предыдущем посте было рассмотрено как заполнить запрос в word с помощью python. В этот раз будет продемонстрировано как заполнить сразу несколько word документов данными из таблицы excel.
Перед тем как работать с программой, нам необходимо подготовить файл excel, где будут содержаться исходные данные. Создадим файл excel с такими данными или используем готовый:
Теперь обратимся к программе.
Так как мы должны считать excel файл, необходимо импортировать соответствующий модуль:
Далее, нам надо пройти по таблице и считать все данные построчно. Это будет выглядеть вот так:
Мы создали пустой список, куда в дальнейшем добавляем значения из таблицы. Добавление происходит только, если в ячейке есть какие-то записи (не пустота).
После проделанных манипуляций, внесем собранные данные в шаблон word:
В итоге у нас будет готовый файл word с данными из таблицы. Только вот он один, да и называется шаблон-final. Как потом отличить документы друг от друга?
Начнем с простого. Чтобы сохранять файлы каждый раз под другими именами, необходимо поменять в конце кода на следующее:
Теперь сохраненный файл будет иметь название компании-отправителя запроса.
При исполнении программы может возникнуть ошибка:
Эта ошибка связана с тем, что в наименовании компании содержатся кавычки. Если из таблицы excel удалить кавычки, то файл word успешно сохранится с именем Компания-1.docx.
Осталось «размножить» документ, введя остальные данные из таблицы.
Здесь тоже все просто. Создаем цикл по нашим собранным данным:
В конце цикла «перепрыгиваем» на название столбца с именем компании, чтобы файл word сохранился с правильным наименованием.
Программа готова! Осталось только создать таблицу excel с компаниями, которые находятся на обслуживании.
Шаблон документа word – здесь.
---Update--- 08.11.2019
Хотя в среднем для каждодневных задач автоматизация не требуется, бывают случаи, когда она может быть необходима. Создание множества диаграмм, рисунков, таблиц и отчётов может утомить, если вы работаете вручную. Так быть не должно. Специально к старту нового потока курса Fullstack-разработчик на Python делимся с вами кейсом постройки конвейера на Python, с помощью которого Excel и Word легко интегрировать: нужно создать таблицы в Excel, а затем перенести результаты в Word, чтобы практически мгновенно получить отчёт.
Openpyxl
Встречайте Openpyxl — возможно, одну из самых универсальных связок [биндингов] с Python, которая сделает взаимодействие с Excel очень простым. Вооружившись этой библиотекой, вы сможете читать и записывать все нынешние и устаревшие форматы Excel, то есть xlsx и xls.
Openpyxl позволяет заполнять строки и столбцы, выполнять формулы, создавать 2D и 3D диаграммы, маркировать оси и заголовки, а также предоставляет множество других возможностей, которые могут пригодиться.
И самое важное — этот пакет позволяет вам перебирать бесконечное количество строк и столбцов в Excel, тем самым избавляя вас от всех этих надоедливых вычислений и построения графиков, которые вам приходилось делать раньше.
Python-docx
Затем идёт Python-docx, этот пакет для Word — то же самое, что Openpyxl для Excel. Если вы ещё не изучили его документацию, вам, вероятно, стоит взглянуть на неё. Python-docx — без преувеличения один из самых простых и понятных мне наборов инструментов, с которыми я работал с тех пор, как начал работать с самим Python.
Python-docx позволяет автоматизировать создание документов путём автоматической вставки текста, заполнения таблиц и рендеринга изображений в отчёт без каких-либо накладных расходов. Без лишних слов давайте создадим наш собственный автоматизированный конвейер. Запустите Anaconda (или любую другую IDE по вашему выбору) и установите эти пакеты:
Автоматизация Microsoft Excel
Сначала загрузим уже созданный лист Excel, вот так:
Теперь переберём все строки в нашей таблице, чтобы вычислить и вставить значения мощности, умножив ток на напряжение:
Как только это будет сделано, мы используем рассчитанные значения мощности, чтобы сгенерировать линейную диаграмму, которая будет вставлена в указанную ячейку, код показан ниже:
Автоматически созданная таблица Excel
Извлечение диаграммы
Теперь, когда мы сгенерировали нашу диаграмму, нам нужно извлечь её как изображение, чтобы мы могли использовать её в нашем отчёте Word. Сначала укажем точное местоположение файла Excel, а также место, где должно быть сохранено изображение диаграммы:
Затем откройте электронную таблицу, используя следующий метод:
Позднее вы сможете перебирать все объекты диаграммы в электронной таблице (если их несколько) и сохранять их в указанном месте:
Автоматизация Microsoft Word
Теперь, когда у нас есть сгенерированное изображение диаграммы, мы должны создать шаблон документа, который в принципе является обычным документом Microsoft Word (.docx), сформированным именно так, как мы хотим: отчёт содержит шрифты, размеры шрифтов, структуру и форматирование страниц.
Теперь всё, что нам нужно сделать, — создать плейсхолдеры для сгенерированного нами контента, то есть табличные значения и изображения, и объявить их с именами переменных, как показано ниже.
Шаблон документа Microsoft Word
Любой сгенерированный контент, включая текст и изображения, может быть объявлен в двойных фигурных скобках >. В случае таблиц вам нужно создать таблицу со строкой шаблона со всеми включёнными столбцами, затем нужно добавить одну строку вверху и одну строку ниже со следующей нотацией:
На рисунке выше — имена переменных:
table_contents для словаря Python, в котором будут храниться наши табличные данные;
Index для ключей словаря (первый столбец);
Power, Current и Voltage для значений словаря (второй, третий и четвёртый столбцы).
Затем импортируем наш шаблонный документ в Python и создаём словарь, в котором будут храниться значения нашей таблицы:
Далее импортируем ранее созданное в Excel изображение диаграммы и создадим другой словарь для создания экземпляров всех объявленных в документе шаблона переменных-заполнителей:
И, наконец, визуализируем отчёт с нашей таблицей значений и изображением диаграммы:
Результаты
И вот — автоматически сгенерированный отчёт Microsoft Word с числами и созданной в Microsoft Excel диаграммой. Мы получили полностью автоматизированный конвейер, его можно использовать, чтобы создать столько таблиц, диаграмм и документов, сколько вам потребуется.
Автоматически сгенерированный отчёт
Исходный код
Вот мой репозиторий на GitHub с шаблоном документа и исходным кодом для этого туториала. А вот ссылка на курс Fullstack-разработчик на Python, который сделает из вас настоящего универсального солдата от кодинга.
Узнайте, как прокачаться и в других специальностях или освоить их с нуля:
В сегодняшней статье я хотел бы, как можно подробнее, рассмотреть интеграцию приложений Python и MS Excel. Данные вопрос может возникнуть, например, при создании какой-либо системы онлайн отчетности, которая должна выгружать результаты в общепринятый формат ну или какие-либо другие задачи. Также в статье я покажу и обратную интеграцию, т.е. как использовать функцию написанную на python в Excel, что также может быть полезно для автоматизации отчетов.
Работаем с файлами MS Excel на Python
Для работы с Excel файлами из Python мне известны 2 варианта:
Использование библиотек
Итак, первый метод довольно простой и хорошо описан. Например, есть отличная статья для описания работы c xlrd, xlwt, xlutils. Поэтому в данном материале я приведу небольшой кусок кода с их использованием.
Для начала загрузим нужные библиотеки и откроем файл xls на чтение и выберем
нужный лист с данными:
Теперь давайте посмотрим, как считать значения из нужных ячеек:
Как видно чтение данных не составляет труда. Теперь запишем их в другой файл. Для этого создам новый excel файл с новой рабочей книгой:
Запишем в новый файл полученные ранее данные и сохраним изменения:
Из примера выше видно, что библиотека xlrd отвечает за чтение данных, а xlwt — за запись, поэтому нет возможности внести изменения в уже созданную книгу без ее копирования в новую. Кроме этого указанные библиотеки работают только с файлами формата xls (Excel 2003) и у них нет поддержки нового формата xlsx (Excel 2007 и выше).
Чтобы успешно работать с форматом xlsx, понадобится библиотека openpyxl. Для демонстрации ее работы проделаем действия, которые были показаны для предыдущих библиотек.
Для начала загрузим библиотеку и выберем нужную книгу и рабочий лист:
Как видно из вышеприведенного листинга сделать это не сложно. Теперь посмотрим как можно считать данные:
Отличие от прошлых библиотек в том, что openpyxl дает возможность отображаться к ячейкам и последовательностям через их имена, что довольно удобно и понятно при чтении программы.
Теперь посмотрим как нам произвести запись и сохранить данные:
Из примера видно, что запись, тоже производится довольно легко. Кроме того, в коде выше, можно заметить, что openpyxl кроме имен ячеек может работать и с их индексами.
К недостаткам данной библиотеки можно отнести, то что, как и в предыдущем примере, нет возможности сохранить изменения без создания новой книги.
Как было показано выше, для более менее полноценной работы с excel файлами, в данном случае, нужно 4 библиотеки, и это не всегда удобно. Кроме этого, возможно нужен будет доступ к VBA (допустим для какой-либо последующей обработки) и с помощью этих библиотек его не получить.
Однако, работа с этими библиотеками достаточно проста и удобна для быстрого создания Excel файлов их форматирования, но если Вам надо больше возможностей, то следующий подпункт для Вас.
Работа с com-объектом
В своих отчетах я предпочитаю использовать второй способ, а именно использование файла Excel через com-объект с использованием библиотеки win32com. Его преимуществом, является то, что вы можете выполнять с файлом все операции, которые позволяет делать обычный Excel с использованием VBA.
Проиллюстрируем это на той же задаче, что и предыдущие примеры.
Для начала загрузим нужную библиотеку и создадим COM объект.
Теперь мы можем работать с помощью объекта Excel мы можем получить доступ ко всем возможностям VBA. Давайте, для начала, откроем любую книгу и выберем активный лист. Это можно сделать так:
Давайте получим значение первой ячейки и последовательности:
Как можно заметить, мы оперируем здесь функциями чистого VBA. Это очень удобно если у вас есть написанные макросы и вы хотите использовать их при работе с Python при минимальных затратах на переделку кода.
Посмотрим, как можно произвести запись полученных значений:
Из примера видно, что данные операции тоже довольно просто реализовываются. Кроме этого, можно заметить, что изменения мы сохранили в той же книге, которую открыли для чтения, что достаточно удобно.
Однако, внимательный читатель, обратит внимание на переменную i, которая инициализируется не 0, как принято python, а 1. Это связано с тем, что мы работаем с индексами ячеек как из VBA, а там нумерация начинается не с 0, а с 1.
На этом закончим разбор способов работы с excel файлами в python и перейдем к обратной задаче.
Вызываем функции Python из MS Excel
Может возникнуть такая ситуация, что у вас уже есть какой-либо функция, которая обрабатывает данные на python, и нужно перенести ее функциональность в Excel. Конечно же можно переписать ее на VBA, но зачем?
Для использования функций python в Excel есть прекрасная надстройка ExcelPython. С ее помощью вы сможете вызывать функции написанные на python прямо из Excel, правда придется еще написать небольшую обертку на VBA, и все это будет показано ниже.
Итак, предположим у нас есть функция, написанная на python, которой мы хотим воспользоваться:
На вход ей подается список, состоящий из списков, это одно из условий, которое должно выполняться для работы данной функции в Excel.
Сохраним функцию в файле plugin.py и положим его в ту же директорию, где будет лежать наш excel файл, с которым мы будем работать.
Теперь установим ExcelPython. Установка происходит через запуск exe-файла и не вызывает затруднений.
Когда все приготовления выполнены, открываем тестовый файл excel и вызовем редактор VBA (Alt+F11). Для работы с вышеуказанной надстройкой необходимо ее подключить, через Tools->References, как показано на рисунке:
Ну что же, теперь можно приступить к написанию функции-обертки для нашего Python-модуля plugin.py. Выглядеть она будет следующим образом:
Итак, что же происходит в данной функции?
Для начала, с помощью PyModule , мы подключаем нужный модуль. Для этого в качестве параметров ей передается имя модуля без расширения, и путь до папки в которой он находится. На выходе работы PyModule мы получаем объект для работы с модулем.
Затем, с помощью PyCall , вызываем нужную нам функцию из указанного модуля. В качестве параметров PyCall получает следующее:
- Объект модуля, полученный на предыдущем шаге
- Имя вызываемой функции
- Параметры, передаваемые функции (передаются в виде списка)
Теперь, чтобы убедиться в работоспособности нашей связки, вызовем нашу свежеиспеченую функцию на листе в Excel:
Как видно из рисунка все отработало правильно.
Надо отметить, что в данном материале используется старая версия ExcelPython, и на GitHub'e автора доступна новая версия.
Заключение
В качестве заключения, надо отметить, примеры в данной статье самые простые и для более глубоко изучения данных методов, я рекомендую обратиться к
документации по нужным пакетам.
Также хочу заметить, что указанные пакеты не являются единственными и в статье опущено рассмотрение, таких пакетов как xlsxwriter для генерации excel файлов или xlwings, который может работать с Excel файлами «на лету», а также же PyXLL, который выполняет аналогичные функции ExcelPython.
Кроме этого в статье я попытался несколько обобщить разборасанный по сети материал, т.к. такие вопросы часто фигурируют на форумах и думаю некоторым будет полезно иметь, такую «шпаргалку» под рукой.
В статье несколько дней назад мы объяснили, как извлечь указанные данные из таблицы Word и сохранить их в Excel в соответствии с форматом. Сегодня мы еще раз объясним, как использовать реальные потребности читателя.Используйте Python для расчета, организации данных из Excel и записи в WordНа самом деле это не сложно, в основном следующие два шага:
- openpyxl читает Excel, чтобы получить контент
- docx читает и записывает файлы Word
Требуется подтверждение
Во-первых, давайте взглянем на некоторые данные Excel, которые нам необходимо обработать. Данные были удалены из соображений конфиденциальности.Пикачуизация
Вы можете видеть, что данных много, и есть повторяющиеся данные. И что нам нужно сделать, это для каждого столбца данныхРассчитывать, систематизировать и автоматически заполнять Word с помощью Python по определенным правилам, Общие требования следующие
Вышеуказанное - это только часть требований, фактических данных, которые необходимо заполнить словом, больше!
Помимо обработки в соответствии с форматом и сохранения его в указанном месте в Word, существует еще одно требование: конечное выходное словоимя файлаЕго тоже нужно сгенерировать по определенным правилам:
Хорошо, анализ требований завершен, давайте посмотрим наPythonКак решить!
Реализация Python
Сначала мы используем Python для выполненияПарсинг
Есть несколько способов использовать openpyxl для чтения ячеек
Понять принцип, мы можем проанализировать и получить данные в Excel
С помощью приведенного выше кода мы успешно извлекаем данные из Excel, так что часть Excel завершена, а затем заполняем словоформу, потому что слово, которое мы читаем здесь по умолчанию, имеет формат .docx, фактически, требование читателя - это файл в формате .doc, поэтому пользователи Windows могут использовать следующий код для пакетного преобразования документов при условии, что установлен win32com.
Однако на данный момент нет хорошей стратегии решения для Mac. Если у вас есть идеи, добро пожаловать в общение. Как только у нас будет файл в формате docx, мы продолжим работать с частью Word.
После определения номера каждой таблицы может быть выполнена соответствующая операция заполнения. Использование таблицы очень похоже на использование в openpyxl. Обратите внимание, что индекс начинается с 0, как в собственном Python.
Приведенный выше код завершает эту часть таблицы в Word.
Продолжаем заполнять следующую форму на Python
Здесь следует обратить внимание на две детали:
- Данные, записанные словом, должны быть строкой, поэтому данные, полученные из Excel, должны быть отформатированы с помощью str
- Могут быть и другие ситуации, такие как слияние в таблице, поэтому количество строк и столбцов, которое вы видите, может быть неверным, и вам нужно постоянно тестировать с помощью кода.
Согласно описанному выше методу заполните данные из Excel в соответствующую позицию в Word по очереди, и все готово! Сохраните это в конце.
Заключительные замечания
Оглядываясь на вышеупомянутый процесс, на самом деле, с точки зрения требований и форматов файлов, задача чтения, записи и анализа файлов на этот раз более сложна, а код и время обдумывания будут больше, поэтому, когда мы рассматриваем использование Python для автоматизации делопроизводства нужно четко обдумать эту проблему .:Независимо от того, является ли задача, которую предстоит выполнить на этот раз, требует много работы или ее нужно будет выполнять в течение длительного времени в будущем, вы можете освободить руки с помощью Python? В противном случае это действительно можно сделать вручную, тогда смысл автоматизированного офиса теряется!
Примечание. Данные и исходный код, использованные в этой статье, доступны в официальной учетной записи: вставайте пораньше в Python.
Читайте также: