将Excel与Word集成,无缝生成自动报告
毫无疑问,微软的Excel和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以来使用过的最简单、最不言自明的工具包之一。它允许您通过插入文本、填充表格和在报表中自动渲染图像来自动生成文档。
言归正传,让我们创建我们自己的自动化流水线。继续使用Anaconda(或者你选择的任何其他IDE)并安装以下软件包:
pip install openpyxl
pip 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 =