Python 自动化处理Excel和Word实现自动办公
作者:Python学习与数据挖掘 时间:2021-06-07 06:41:16
今天我来分享一些Python办公自动化的方法,欢迎收藏学习,喜欢点赞支持,欢迎畅聊。
Openpyxl
Openpyxl 可以说是 Python 中最通用的工具模块了,它使与 Excel 交互pip install openpyxl
pip install python-docx简直就像在公园里漫步一样。 有了它,你就可以读写所有当前和传统的 excel 格式,即 xlsx 和 xls。
Openpyxl 允许填充行和列、执行公式、创建 2D 和 3D 图表、标记轴和标题,以及大量可以派上用场的其他功能。最重要的是,这个包使你能够在 Excel 中迭代无数行和列,从而使你免于所有烦人的数字运算和绘图。
Python-docx
Python-docx 这个包之于 Word,就像 Openpyxl 之于 Excel。 如果你还没有研究过他们的文档,那么可能应该看看。毫不夸张地说,自从我开始使用 Python 以来,Python-docx 是我使用过的最简单、最不言自明的工具包之一。
它允许你通过插入文本、填写表格并将图像自动渲染到报告中来自动生成文档,而无需任何开销。
让我们创建我们自己的自动化管道。 继续并启动 Anaconda 并安装以下软件包:
pip install openpyxl
pip install python-docx
微软 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')
pass
workbook_2.Close(True)
operation.Quit()
微软 word 自动化
现在我们已经生成了我们的图表图像,我们必须创建一个模板文档,它是一个普通的 Microsoft Word 文档 (.docx),完全按照我们希望报告的外观制定,包括字体、字体大小、格式和页面结构 .
然后我们需要做的就是为我们的自动化内容创建占位符,即表格值和图像,并使用如下所示的变量名称声明它们。
任何自动化内容都可以在一对双大括号 {{variable_name}} 内声明,包括文本和图像。 对于表格,你需要创建一个包含所有列的模板行的表格,然后需要使用以下符号在上一行和下一行附加:
{%tr for item in variable_name %}
最后一行:
%tr endfor %}
在上图中,变量名是
table_contents 用于存储表格数据的 Python 字典
字典键的索引(第一列)
字典值的功率、电流和电压(第二、第三和第四列)
然后我们将我们的模板文档导入 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')
来源:https://blog.csdn.net/weixin_38037405/article/details/121370422


猜你喜欢
Django应用程序入口WSGIHandler源码解析
django admin后台添加导出excel功能示例代码

浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
Python画图练习案例分享

springBoot下实现java自动创建数据库表

利用Python判断文件的几种方法及其优劣对比
一文搞懂MySQL索引所有知识点

Python pickle模块实现对象序列化
Go实现文件上传和下载

python析构函数用法及注意事项
python 使用pygame工具包实现贪吃蛇游戏(多彩版)

百分百成功的全网最简约sklearn环境配置教程

利用python实现全屏爱心雨向喜欢的人表白

MySql安装与卸载的详细教程
Python Pandas实现DataFrame合并的图文教程

TensorFlow 滑动平均的示例代码
用SQL语句完成SQL Server数据库的修复
python爬取网页转换为PDF文件

Python第三方模块apscheduler安装和基本使用
