主要介绍用Python替换Excel的基本功能。核心目的是将这些功能整合起来,然后每天自动处理日报等需求,提升效率节约时间。我们可以用openpyxl.load_workbook()来打开一个存在的Excel文件。
导入需要的库
from openpyxl import load_workbook
读取已有的指定文件
wb = load_workbook(filename = 'exists_book.xlsx')
openpyxl.load_workbook()是一个函数,接受一个文件名作为参数,返回 workbook 数据类型。例如我们查看wb的类型
type(wb)
openpyxl.workbook.workbook.Workbook
待处理的Excel文件如下,希望处理为:第1列为百分比,第2列为小数点后两位,第3列为货币,第4列为年月日时分秒格式。
查看Excel文件所包含的工作表
print(wb.sheetnames)
# 当然也可以用print(wb.get_sheet_names()来查看
['Sheet1']
插入一个新的工作表,并指定工作表插入的位置
wb.create_sheet(title = 'new_name',index = 0)
# 也可以写为 wb.create_sheet('new_name',0),
# 注意工作表名称和位置顺序不能反,不然会报错。
插入新工作表之后再查看所含工作表的时候会显示已经插入的工作表名:
['new_name', 'Sheet1']
对Sheet1进行重新命名改为first_name,
# 选定工作表
ws = wb['Sheet1']
# ws = wb.get_sheet_by_name('Sheet1')
# 更改工作表名称
ws.title = 'first_name'
当我们输入以上命令进行更改工作表名称后再输入命令print(wb.sheetnames),会显示['new_name', 'first_name'],表示工作表名称已更改。
如下可读取指定单元格内容,会显示0.24。
print(ws['A2'].value)
将第1列改为百分比
ws.cell(row=1,column=1).number_format = '0.00%'
ws.cell(row=2,column=1).number_format = '0.00%'
ws.cell(row=3,column=1).number_format = '0.00%'
ws.cell(row=4,column=1).number_format = '0.00%'
将第2列改为小数点后两位
ws.cell(row=1,column=2).number_format = '0.00'
ws.cell(row=2,column=2).number_format = '0.00'
ws.cell(row=3,column=2).number_format = '0.00'
ws.cell(row=4,column=2).number_format = '0.00'
将第3列改为带货币符号
ws.cell(row=1,column=3).number_format = '"¥"#,###'
ws.cell(row=2,column=3).number_format = '"¥"#,###'
ws.cell(row=3,column=3).number_format = '"¥"#,###'
ws.cell(row=4,column=3).number_format = '"¥"#,###'
将第4列改为年月日时分秒格式
ws.cell(row=1,column=4).number_format = 'yyyy-MM-dd HH:mm:ss'
ws.cell(row=2,column=4).number_format = 'yyyy-MM-dd HH:mm:ss'
ws.cell(row=3,column=4).number_format = 'yyyy-MM-dd HH:mm:ss'
ws.cell(row=4,column=4).number_format = 'yyyy-MM-dd HH:mm:ss'
经过以上4格式操作,4列所需要设置的格式已经全部完成了。
我们还可以进行复制工作表操作
# 拷贝工作表
ws2 = wb.copy_worksheet(ws)
将复制后的工作表名称用红色填充
ws2.sheet_properties.tabColor = 'FF0000'
全部完成后,不要忘记进行保存。
wb.save('exists_book.xlsx')
然后我们打开保存后的文件,看是否是我们希望的格式。打开后可以发现在第一个位置插入了指定的new_name工作表,而first_name表中的数据已经进行了格式处理,复制的工作表程序进行了自动重命名,颜色填充为指定的红色。