По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
В этой статье мы расскажем как интегрировать 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')
OpenMeetings - программное средство, предназначенное для проведения видеоконференций, презентаций, а также позволяет проводить онлайн-обучение обеспечивая при этом мгновенный обмен данных.
Программа помимо основных функций имеет ряд полезных возможностей, способствующих качественному проведению мероприятий используя видеосвязь к которым относятся:
групповой и личный чат для удобного общения пользователей;
запись с экрана и звука во время проведения видеотрансляций;
возможность создавать неограниченное количество сессий для общения;
внутренний почтовый клиент для переписки и рассылок по электронной почте;
удобный и понятный календарь с функцией планирования событий;
проведение опросов и голосования среди аудитории в режиме реального времени;
пересылка необходимых документов или файлов различных форматов;
удобное и функциональное приложение для ОС Android.
Достоинством программы OpenMeetings наличие гибкой настройки интерфейса под бренд компании с размещением логотипов, собственного дизайна, а также выбрать набор необходимых инструментов для удобной работы и общения.
Требования для установки программы:
Сервер под управлением Ubuntu 18.04.
Пользователь с предоставленными правами sudo.
Минимальные системные требования:
Рекомендуемые системные требования:
CPU: 1 ГГц;
CPU: 2x/4x 2 ГГц;
Оперативная память: 1 ГБ;
Оперативная память: 4 ГБ;
Установить Java
OpenMeetings написана Java скриптах, поэтому вам для работы программы необходимо будет ее установить. По умолчанию последняя версия Java недоступна в репозитории Ubuntu 18. Поэтому вам нужно будет добавить репозиторий Java в вашу систему, выполнив следующую команду:
sudo add-apt-repository --yes ppa:webupd8team/java
Затем следует обновить репозиторий и установить Java с помощью следующей команды:
sudo apt-get install oracle-java8-installer -y
После установки Java вы можете проверить ее версию с помощью следующей команды:
java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
Следующим этапом Вам необходимо установить некоторые компоненты для вашей системы с помощью выполнения следующей команды:
sudo apt-get install install imagemagick ghostscript libxt6 libxrender1 ffmpeg sox -y
Далее вам необходимо установить MariaDB Server для хранения данных в вашей системе, выполнив следующую команду:
sudo apt-get install mariadb-server -y
После установки MariaDB необходимо войти в оболочку MariaDB:
mysql -u root -p
Введите пароль пользователя root и нажмите Enter, затем создайте базу данных и пользователя с помощью следующей команды:
MariaDB [(none)]> CREATE DATABASE openmeetings;
MariaDB [(none)]> CREATE USER openmeetings;
Затем предоставьте права доступа к базе данных OpenMeetings с помощью следующей команды:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON openmeetings.* TO 'openmeetings'@'localhost' IDENTIFIED BY 'password';
Затем необходимо выполнить команду FLUSH PRIVILEGES, чтобы таблица привилегий была перезагружена MySQL, и мы могли использовать новые учетные данные:
MariaDB [(none)]> FLUSH PRIVILEGES;
Затем выйдите из консоли MariaDB с помощью следующей команды:
MariaDB [(none)]> q
Установка OpenMeetings
Вы можете загрузить последнюю версию OpenMeetings со страницы загрузки, перейдя в браузере по следующей ссылке:
wget http://www-eu.apache.org/dist/openmeetings/4.0.4/bin/apache-openmeetings-4.0.4.tar.gz
После завершения загрузки извлеките загруженный файл с помощью следующей команды:
sudo tar xvf apache-openmeetings-4.0.4.tar.gz -C /opt/openmeetings
Затем запустите приложение с помощью следующей команды:
cd /opt/openmeetings
sudo sh red5.sh openmeetings
Доступ к веб-интерфейсу OpenMeetings
Откройте веб-браузер и введите URL-адрес http://your-server-ip:5080/openmeetings. Вы будете перенаправлены на следующую страницу:
Здесь нажмите на кнопку >. Вы должны увидеть следующую страницу:
Выберите тип базы данных и укажите имя базы данных, затем нажмите кнопку >. Вы должны увидеть следующую страницу:
Введите имя пользователя, пароль и адрес электронной почты, затем нажмите кнопку >. Вы должны увидеть следующую страницу:
Теперь предоставьте данные SMTP, затем нажмите кнопку >. Вы должны увидеть следующую страницу:
Укажите ImageMagick, sox и путь FFmpeg, затем нажмите кнопку >. Вы должны увидеть следующую страницу:
Выберите значение по умолчанию и нажмите кнопку >. Вы должны увидеть следующую страницу:
Теперь нажмите на кнопку "Enter the Application". Вы должны увидеть следующую страницу:
Введите свои учетные данные, затем нажмите кнопку "Sign In". Вы должны увидеть следующую страницу:
В заключении следует отметить, что проведение видеоконференций с помощью программы OpenMeetings оправдывает себя за счет простого управления программой и хорошего набора удобных функций необходимых для качественного общения по видеосвязи.
Если вы еще не умеете писать скрипты в системах Unix и Linux, эта статья познакомит с основами написания скриптов.
Написание скриптов в системе Unix или Linux может быть одновременно и простым и чрезвычайно сложным. Все зависит от того, что вы пытаетесь выполнить, используя скрипт. В этой статье мы рассмотрим основы создания скриптов - то, как начать, если вы никогда раньше не создавали скрипты.
Идентификация оболочки.
Сегодня в системах Unix и Linux есть несколько оболочек, которые вы можете использовать. Каждая оболочка - это интерпретатор команд. Он считывает команды и отправляет их ядру для обработки.
Bash является одной из самых популярных оболочек, но существуют также zsh, csh, tcsh и korn. Есть даже оболочка под названием fish, которая может быть особенно полезна новичкам в Linux благодаря полезным параметрам автозаполнения команд. Чтобы определить, какую оболочку вы используете, используйте эту команду:
$ echo $SHELL
/bin/bash
Вы также можете определить свою основную оболочку, просмотрев файл /etc/passwd:
$ grep $USER /etc/passwd
nemo:x:1111:1111:Nemo the Fish:/home/nemo:/bin/bash “
read myfile
else
myfile=$1
fi
if [ ! -f “$myfile” ]; then
echo “Файл не найден: $myfile”
exit
fi
case $myfilein
*.tar) tar xf $myfile;;
*.zip) unzip $myfile;;
*.rar) rar x $myfile;;
*) echo “Нет опций для извлечения $myfile”
esac
Обратите внимание, что этот сценарий также запрашивает имя файла, если оно не было предоставлено, а затем проверяет, действительно ли указанный файл существует. Только после этого выполняется извлечение.
Реакция на ошибки
Вы можете обнаруживать ошибки в скриптах и реагировать на них и тем самым избегать других ошибок. Хитрость заключается в том, чтобы проверять выходные коды после запуска команд. Если код выхода имеет значение, отличное от нуля, произошла ошибка. В этом скрипте проверяется, запущен ли Apache, но отправляем результат проверки в /dev/null. Затем проверяем, не равен ли код выхода нулю, поскольку это означает, что команда ps не получила ответа. Если код выхода не равен нулю, сценарий сообщает пользователю, что Apache не запущен.
#!/bin/bash
ps -ef | grep apache2 > /dev/null
if [ $? != 0 ]; then
echo Apache is not running
exit
fi