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


猜你喜欢
- 以下介绍用数据库实现简单计数器,功能实现统计网站每日访问,每周访问及总访问量的统计,使用js调用下面存为count.asp<%&nbs
- 4款JavaScript放大镜特效脚本。准确的说,Anythingzoomer和Bezoom才是正宗的放大镜特效,当鼠标悬浮在图片上时,能放
- java JSP开发之Spring中Bean的使用在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例
- 谢谢icedblog提供的代码, 从那个js中我参考了moveSelect的利用, 不过那个代码中有几个BUG, 比如按住鼠标不放会不见显示
- 如下所示:import timedef date_compare(item1, item2): t1 = time.mktime(time.
- 最近开始使用Go/GoLand 在import 自定义包时出现各种状况,措手不及,大概在网上找了解决方法,几乎没说的清楚的(可能是我个人理解
- openpyxl是一个第三方库,可以处理xlsx格式的Excel文件。pip install openpyxl安装。读取Excel文件需要导
- 一、在访客的内心深处做导航我讨厌迷失,不管是在道路上或是在线网络上。猜想一下?您的访客也是这样的。就像我们期望看到的道路上的路标一样,来帮助
- File对象是对文件操作最常用的类,平常工作总用的很多,贴出来了几个我工作常用的几个方法。简单总结了下直接上代码://构建文件对象File
- selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题,selen
- 下面是在深度学习数据集处理过程中可能会用到的一个小程序,帮助我们根据图片文件的名字来分开图片:import osimport shutilp
- Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持
- 介绍:UUID是128位的全局唯一标识符,通常由32字节的字符串表示。使用:import uuid print uuid.uuid1()14
- 如果要问做什么事是最有吸引力,那就是创建Web应用。Web设计者们对设计交互式的Web没有什么更好的办法,却对我们做桌面软件的同事投去少许羡
- 前言本节我们讲讲一些简单查询语句示例以及需要注意的地方,简短的内容,深入的理解。EOMONTH在SQL Server 2012的教程示例中,
- 本文实例为大家分享了opencv实现答题卡识别的具体代码,供大家参考,具体内容如下"""识别答题卡"
- 本文实例讲述了python函数形参用法。分享给大家供大家参考。具体如下:函数形参:函数取得的参数是你提供给函数的值,这样函数就可以利用这些值
- torch.nn 是专门为神经网络设计的模块化接口,nn构建于autgrad之上,可以用来定义和运行神经网络nn.Module 是nn中重要
- 原来看到这个代码的时候,觉得功能不错,调试并整理了一下也许大家用的到,对于越来越注重用户体验的今天,这种功能一定很受欢迎,当然本例子只是一个
- 一、INSERT和REPLACEINSERT和REPLACE语句的功能都是向表中插入新的数据。这两条语句的语法类似。它们的主要区别是如何处理