本文主要使用openpyxl库来处理Excel,这个库很强大,日常用到的操作基本都可以处理。如果再配合Pandas以及其他处理Excel的库,替代VBA应该没问题。
Python没有自带openpyxl,需要自己安装。安装完成后,有基本的Python知识就可以实战了。
在终端下进行输入如下命令进行安装
pip install openpyxl
安装成功的标志是输入如下内容没有报错
import openpyxl
在实战之前,先明确一下基本概念。一个Excel文件也称为一个工作簿,工作簿保存在扩展名为.xlsx的文件中,每个工作簿包含多个工作表,或者直接叫做表。用户当前查看的表(或关闭Excel前最后查看的表),称为活动表。
导入创建Excel文件的模块Workbook
from openpyxl import Workbook
创建Excel文件,并将文件命名为empty_book.xlsx
wb = Workbook()
dest_filename = 'empty_book.xlsx'
创建第1个工作表,名字叫做"range names",从第1行到第10行,每行写入1-19数字。
ws1 = wb.active
ws1.title = "range names"
for row in range(1, 10):
ws1.append(range(20))
创建第2个工作表,名字叫做"Pi",在F5单元格(即第5行第6列位置)位置写入内容3.14。
ws2 = wb.create_sheet(title="Pi")
ws2['F5'] = 3.14
创建第3个工作表,名字叫做"Data",在第4行到第7行和第3列到第10列的区域,每列分别写入该列对应的英文字母,比如第3列对应C,则写入C。
from openpyxl.utils import get_column_letter
ws3 = wb.create_sheet(title="Data")
for row in range(4, 8):
for col in range(3, 11):
_ = ws3.cell(column=col, row=row, value=/"{0}".format(get_column_letter(col)))
其中,get_column_letter模块的作用是把每列对应的数字转换为字母,比如第3列转换为C列。
处理完成后,处理的内容还在电脑内存中,需要进行保存,才可以在电脑当前目录下(也即当前文件夹)找到名为empty_book.xlsx的文件。
wb.save(filename = dest_filename)
如果不知道当前路径,可以输入如下命令查看
pwd
然后我们打开Excel文件,来看看是否和我们所处理的完全一致。
如图所示,文件名和创建的3个工作表名完全一致。第一个工作表,从第1行到第10行,每行写入1-19数字内容。
第二个工作表,名字叫做"Pi",在F5单元格(即第5行第6列位置)位置显示为3.14。
第3个工作表,名字叫做"Data",在第4到第7行和第3列到第10列的区域,每列分别写入该列对应的英文字母。
至此,按照我们想法创建一个包含3个工作表的Excel文件就完成了。当然,你可以将代码整合为py文件可以一起运行,重复运行。