По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В этой статье мы расскажем как интегрировать Python c Excel и Word, чтобы без проблем создавать автоматические отчеты. Microsoft Excel и Microsoft Word – это, без доли сомнений, две наиболее широко используемые программы как в мире бизнеса, так и в некорпоративной сфере. Они практически являются синонимами слову «работа». Как правило, не проходит и недели, чтобы мы тем или иным способом не воспользовались их преимуществами. И хотя для обычных повседневных задач автоматизация не требуется, бывают случаи, когда она может стать необходимостью. А именно, когда у вас есть множество диаграмм, рисунков, таблиц и отчетов, которые необходимо сделать, это может стать очень утомительным занятием, если все это выполнять вручную. А это не должно быть так. На самом деле существует способ создать конвейер в Python, где можно будет легко интегрировать эти программы для создания электронных таблиц в Excel, а затем передавать результаты в Word для создания отчета практически мгновенно. Openpyxl Познакомьтесь с Openpyxl, возможно, одной из самых универсальных привязок в Python, которая превращает взаимодействие с Excel буквально в прогулку по парку. Используя этот пакет, вы сможете читать и записывать все новые и старые форматы Excel, то есть .xlsx и .xls. Openpyxl позволяет заполнять строки и столбцы, выполнять формулы, создавать 2D- и 3D-диаграммы, маркировать оси и заголовки, а также имеет множество других возможностей, которые могут пригодиться. Однако здесь наиболее важно то, что этот пакет позволяет вам перебирать бесконечное количество строк и столбцов Excel, тем самым избавляя вас от всех этих утомительных вычислений и построения графиков, которые вам приходилось делать ранее самим. Python-docx А затем появляется Python-docx – пакет для Word – то же, что Openpyxl для Excel. Если вы все еще не изучили их документацию, то вам все же стоит на нее взглянуть. Python-docx – без преувеличения один из самых простых и понятных наборов инструментов, с которыми я работал с тех пор, как начал работать с Python. Он позволяет автоматизировать создание документов, автоматически вставляя текст, заполняя таблицы и отображая изображения в отчете без каких-либо усилий. Без лишних церемоний давайте создадим наш собственный автоматизированный конвейер. Запустите IDE по вашему выбору и установите следующие пакеты: pip install openpyxlpip install python-docx Автоматизация Microsoft Excel Для начала загрузим уже созданную книгу Excel (как показано ниже): workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] Затем мы пройдемся по всем строкам в нашей электронной таблице для того, чтобы вычислить и вставить значение мощности, которую мы получим, умножив ток на напряжение: for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power Как только мы сделаем это, то мы сможем использовать рассчитанные значения мощности для построения линейной диаграммы, которая будет вставлена в указанную ячейку, как показано ниже: values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') Извлечение диаграммы Теперь, когда мы построили нашу диаграмму, нам нужно ее извлечь в формате изображения для того, чтобы мы могли использовать ее в нашем отчете Word. Для начала объявим точное местоположения нашего файла Excel, а также место, куда мы хотим сохранить изображение получившейся диаграммы: input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" Затем необходимо получить доступ к таблице, используя следующий метод: operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) И далее вы можете перебрать все диаграммы в таблице (если их больше одной) и сохранить их в указанном месте: for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') passworkbook_2.Close(True) operation.Quit() Автоматизация Microsoft Word Теперь, когда у нас есть изображение диаграммы, мы должны создать шаблон документа, который представляет собой обычный документ Microsoft Word (.docx), сформированный именно так, как нам необходимо, чтобы наш отчет имел определенный тип и размер шрифта, нужное форматирование и структуру страницы. Далее, все, что нам необходимо сделать, это создать заполнители для нашего автоматизированного содержимого, то есть значений таблиц и изображений, и объявить их с переменными, как показано ниже. Внутри двойных фигурных скобок {{variable_name}} может быть объявлен любое автоматизированное содержимое, включая текст и изображения. Для таблиц вам необходимо создать таблицу с шаблонной строкой, в которую включены все столбцы, а затем вам необходимо добавить еще одну строку выше и одну строку ниже со следующими обозначениями: Первая строка: {%tr for item in variable_name %} Последняя строка: {%tr endfor %} На рисунке выше указаны следующие имена переменных: table_contents для словаря Python, в котором будут храниться наши табличные данные. Index для ключей словаря (первый столбец). Power, Current и Voltage для значений словаря (второй, третий и четвертый столбцы). Затем мы импортируем наш документ-шаблон в Python и создаем словарь, в котором будут храниться значения нашей таблицы: template = DocxTemplate('template.docx') table_contents = []for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) Далее мы импортируем изображение диаграммы, которое ранее мы создали в Excel, и создаем еще один словарь для создания экземпляров всех переменных-заполнителей, объявленных в документе-шаблоне: image = InlineImage(template,'chart.png',Cm(10))context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } И, наконец, мы отображаем отчет с нашей таблицей значений и изображением диаграммы: template.render(context) template.save('Automated_report.docx') Заключение И вот, мы получили автоматически созданный отчет Microsoft Word с числами и диаграммами, созданными в Microsoft Excel. При этом у вас есть полностью автоматизированный конвейер, который можно использовать для создания любого количества таблиц, диаграмм и документов. Исходный код программы import openpyxl as xl from openpyxl.chart import LineChart, Reference import win32com.client import PIL from PIL import ImageGrab, Image import os import sys from docx.shared import Cm from docxtpl import DocxTemplate, InlineImage from docx.shared import Cm, Inches, Mm, Emu import random import datetime import matplotlib.pyplot as plt ######## Generate automated excel workbook ######## workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') ######## Extract chart image from Excel workbook ######## input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') pass workbook_2.Close(True) operation.Quit() ######## Generating automated word document ######## template = DocxTemplate('template.docx') #Generate list of random values table_contents = [] for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) #Import saved figure image = InlineImage(template,'chart.png',Cm(10)) #Declare template variables context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } #Render automated report template.render(context) template.save('Automated_report.docx')
img
Привет! Сегодня в статье мы расскажем, как обновить прошивку на IP-телефоне Cisco через Cisco Unified Communications Manager (CUCM) . Обновимся? Сначала нужно скачать необходимую версию прошивки для нашего телефона на сайте Cisco.com в разделе Support → Downloads. Далее скачанный файл нужно перенести в директорию SFTP или FTP сервера По-умолчанию нельзя обновить прошивку для отдельного телефона. После того, как вы установите файл прошивки обновления в CUCM, все телефоны с такой же моделью автоматически начнут обновление при их перезапуске. Чтобы избежать этой проблемы, нужно сохранить существующее имя прошивки телефона. Для этого в разделе Cisco Unified CM Administration переходим во вкладку Device → Device Settings → Device Defaults, ищем необходимый нам телефон, и копируем название его прошивки. Также это можно посмотреть на странице телефона в разделе Device → Phone, в строке Active Load ID. Далее переходим в раздел Cisco Unified OS Administration во вкладку Software Upgrades → Install/Upgrade. Здесь указываем следующие данные: Source – указываем Remote Filesystem; Directory – директория, где находятся файлы прошивки (если они находятся в корне, то указываем “”); Server – указываем адрес сервера, на котором мы разместили файлы прошивок; User Name и User Password – логин и пароль для подключения к серверу с файлами; Transfer Protocol – протокол сервера – FTP или STFP; После этого в Software Location выбираем файл прошивки и нажимаем Next После этого CUCM покажет контрольную сумму MD5 файла прошивки, которую можно сравнить с той, которая указана на сайте Cisco. Проверив, нажимаем Next для начала установки. Установка будет завершена, когда в строке Status будет написано Complete. Следующим шагом нужно будет перезапустить сервис Cisco TFTP. Для этого переходим в раздел Cisco Unified Serviceability во вкладку Tools → Control Center → Feature Services. Выбираем наш сервер, находим Cisco TFTP и нажимаем Restart. После этого дефолтная прошивка для данного типа телефонов изменится на загруженную нами. Пока эта прошивка указана в меню Device → Device Settings → Device Defaults у конкретной модели телефона, перезапуск любого телефона этой модели приведет к установки на него новой прошивки. Поэтому нужно скопировать из поля Load Information название новой прошивки и заменяем его на старое, скопированное ранее. Старая и новая версии прошивки находятся на TFTP, но старая остается стандартной для всех устройств данной модели. Теперь обновим прошивку на одном конкретном телефоне. Переходим в меню Device → Phone, находим желаемый телефон и в строку Phone Load Name вставляем название новой прошивки. После этого сохраняем конфигурацию и перезагружаем телефон. В результате на нем будет установлена новая версия прошивки. Проверить это можно на самом телефоне, нажав кнопку Settings и перейдя в меню Model Information – версия прошивки будет написана в пункте Load File.
img
Сегодня в статье будет описан процесс установки и базовой настройки OpenVPN Access Server – полнофункциональное VPN SSL решение, которое включает в себя непосредственно OpenVPN сервер, веб-интерфейс для управления и клиенты для разных операционных систем – Windows, Mac, Android, IOS, Linux. Во встроенной бесплатной лицензии доступен функционал для одновременного подключения двух пользователей, и, при гибком использовании, этого хватит для реализации множества задач. Пошаговое видео Официальный сайт и процесс установки У OpenVPN Access Server (далее – OVPN AS) есть официальный сайт - https://openvpn.net/ , на котором можно найти множество информации об установке OVPN AS на облачный сервер – вроде платформы Amazon Cloud (Amazon Web Services), на Linux-based операционную систему или на виртуальную машину. : В нашем случае устанавливать будем на CentOS 6 версии, и, для этого необходимо перейти по ссылке Access Server Software Packages, там выбрать CentOS и разрядность ОС, в данном случае – CentOS 6 amd/x86 32-bit. Данная ссылка ведет на RPM-пакет, поэтому проще всего скопировать ссылку и далее скачать пакет с помощью команды wget (но об этом немного ниже). Как альтернативный путь установки – можно скачать на ваш ПК данный пакет и с помощью чего-то вроде WinSCP перенести файл на ваш сервер. Но, как мне кажется, с помощью wget это сделать на порядок быстрее и проще. Далее подключаемся к серверу через терминал, например, Putty, и вводим команду, которая сохранит RPM пакет с OVPN AS в папку tmp в файл под названием ovpn.rpm: wget -O /tmp/ovpn.rpm http://swupdate.openvpn.org/as/openvpn-as-2.1.4-CentOS6.i386.rpm Осталось немного – далее необходимо установить данный пакет. Для начала переходим в нужную директорию с помощью команды cd /tmp и затем выполняем команду rpm -i ovpn.rpm. После чего возможна небольшая пауза, вы увидите, как происходит установка пакета, в конце вы должны увидеть подтверждение, что всё в порядке. Последний шаг, который необходимо сделать перед доступом к веб-интерфейсу – нужно поменять пароль на пользователе openvpn. Делается это следующей командой: passwd openvpn %ваш_пароль%. Если пароль будет простой, то ОС ругнётся – на это можно не обращать внимания. Настройка OpenVPN Access Server с помощью веб-интерфейса Сначала требуется зайти на веб-интерфейс: необходимо ввести адрес https://serveripaddress:943/admin – обратите внимание на обязательность https соединения и 943 порт – это очень важно. Если наберете без /admin попадете в пользовательский интерфейс. Вы, возможно, увидите предупреждение от браузера о небезопасности соединения – можете смело игнорировать. Попав на страницу аутентификации, вводите логин openvpn и пароль, который вы установили в предыдущем шаге. Вам должна открыться следующая картина: Краткое описание каждого из разделов: Status - общее состояние вашего VPN-сервера, пользователи, использующие сервис в данный момент, логи; Configuration - конфигурация сервера – от лицензий до настроек веб-сервера и отказоустойчивости; User Management - создание и управление пользователями и группами пользователей; Authentication - настройка аутентификации и ее различных методов; Tools - различные инструменты для проверки работоспособности, документация, тех. поддержка; Первым делом идем по следующему пути Authentication → General и меняем метод аутентификации на Local: Далее необходимо создать пользователя. Для этого нужно пройти по следующему пути: User Management → User Permissions → Add Extension → Choose IAX Extension и ввести имя нового пользователя(в нашем случае - Fedulya) и немного правее нажать Show . В поле Local Password ввести пароль, остальное все можно оставить по умолчанию. Как заключительный шаг настройки, необходимо ввести ваш внешний IP-адрес во вкладке Server → Network → Settings, остальные настройки уже необходимо гибко выбирать в зависимости от ваших нужд – если у вас появятся вопросы, то оставляйте их в комментариях, с радостью ответим. Важно – по умолчанию вам доступно только две лицензии для одновременного использования, поэтому создание множества юзеров без покупки дополнительных лицензий не имеет большого смысла Заключение Теперь можно зайти в пользовательский интерфейс по адресу https://serveripaddress:943/ ввести логин и пароль свежесозданного на предыдущем шаге пользователя и выбрать опцию «Connect». Далее произойдет установка клиента и автоматически загрузится ваш профиль. Как итог – в трее должно появиться диалоговое сообщение «Connected». Более подробно можете ознакомиться с процессом подключения в нашем видео про настройку OpenVPN Access Server
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59