前言
无论是程序员还是其他的工作岗位每天我们都会和大量的表格接触。处理表格数据有可能会占据我们比较多的时间。那么怎么优化我们工作,提高工作效率。2个小时的工作,怎么缩短到十几分钟搞定。基于这个出发点,Python是否能够帮助到我们呢?
Excel 是 Windows 环境下流行的、强大的电子表格应用。openpyxl模块让 Python程序能读取和修改 Excel电子表格文件。例如,可能有一个无聊的任务,需要从一个电子表格拷贝一些数据,粘贴到另一个电子表格中。
或者可能需要从几千行中挑选几行,根据某种条件稍作修改。或者需要查看几百份部门预算电子表格,寻找其中的赤字。正是这种无聊无脑的电子表格任务,我们可以借助 Python 来完成。
安装
pip工具升级
这里面需要注意如果想要安装openpyxl模块,我们的pip版本必须升级到20.1.1。如果我们直接 pip install openpyxl此时会给我们报一个警告。在命令行中直接升级pip工具的版本即可。
python -m pip install --upgrade pip
复制代码

出现红色框中的内容就证明我们的pip工具版本升级成功了
安装openpyxl
pip install openpyxl
复制代码
如果通过普通的方式无法安装openpyxl模块,我们可以借助还源的方式来安装,在这里我们推荐的是豆瓣源
pip install openpyxl -i https://pypi.douban.com/simple
复制代码

通过还源安装还是非常快的。准备工作已经做完,我们就开始来使用一下这个openpyxl模块来上手处理Excel表格
openpyxl模块的使用
读取Excel文档
新建一个text.xlsx文档可以直接放到我们项目的当前文件夹下。Excel 自动为新工作簿提供的3 个默认的表,名为 Sheet1、Sheet2 和 Sheet3。如下图

在openpyxl中,主要用到三个概念:Workbooks,Sheets,Cells。Workbook就是一个excel工作表;Sheet是工作表中的一张表页;Cell就是简单的一个格。openpyxl就是围绕着这三个概念进行的,不管读写都是“三板斧”:打开Workbook,定位Sheet,操作Cell。
实例代码演示
import openpyxl
wb = openpyxl.load_workbook('text.xlsx')
print(type(wb)) #
复制代码
在penpyxl.load_workbook()函数接受文件名,返回一个workbook 数据类型的值。这个workbook 对象代表这个 Excel 文件
读取Excel文档工作薄
import openpyxl
wb = openpyxl.load_workbook('text.xlsx')
# 获取所有的工作薄
sheet_name = wb.get_sheet_names()
print(sheet_name) # ['Sheet1','Sheet2','Sheet3']
# 获取某一个工作薄
sheet1 = wb.get_sheet_by_name('Sheet1')
print(sheet1) #
# 获取工作薄名称
print(sheet1.title) # Sheet1
复制代码
访问表格数据
有了 Worksheet 对象后,就可以按名字访问 Cell 对象
import openpyxl
wb = openpyxl.load_workbook('text.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
a1 = sheet['A1']
print(a1) #
a1_value = sheet['A1'].value
print(a1_value) # 14:00:00
b1_value = sheet['B1'].value
print(b1_value) # KFC
c1_value = sheet['C1'].value
print(c1_value) # 1
复制代码
openpyxl核心模块Workbook
在openpyxl中有一个核心模块Workbook可以更好的来帮助我们操作excel文件
创建一张新电子表
from openpyxl import Workbook
import datetime
wb = Workbook()
ws = wb.get_sheet_by_name('Sheet')
# 设置工作薄名称
ws.title = 'python'
# 设置内容
ws['A1'] = 'Hello World'
ws['A2'] = datetime.datetime.now()
wb.save('new_text.xlsx')
复制代码

openpyxl模块对电子表格进行运算操作
下面表格有如下数据

我想通过openpyxl计算三门学科的平均分以及总分
import openpyxl
from openpyxl.styles import Alignment
def process_worksheet(sheet):
avg_column = sheet.max_column + 1 # 平均数,存放在最后一列
sum_column = sheet.max_column + 2 # 求和,存放在最后第二列
for row in sheet.iter_rows(min_row=2, min_col=2):
scores = [cell.value for cell in row] # 获取一行的值
sum_score = sum(scores) # 求一行的和
avg_score = sum_score / len(scores) # 求一行的平均数
avg_cell = sheet.cell(row=row[0].row, column=avg_column)
sum_cell = sheet.cell(row=row[0].row, column=sum_column)
avg_cell.value = avg_score # 定位到单元格,设置总分
sum_cell.value = sum_score # 定位到单元格,设置平均分
# 设置对齐方式,水平是右对齐,垂直是居中
align = Alignment(horizontal='left', vertical='center', wrap_text=True)
avg_cell.alignment = align
sum_cell.alignment = align
# 设置平均分和总分的标题
sheet.cell(row=1, column=avg_column).value = '平均分'
sheet.cell(row=1, column=sum_column).value = '总分'
def main():
wb = openpyxl.load_workbook('new_text.xlsx')
sheet = wb.get_sheet_by_name('python')
process_worksheet(sheet)
wb.save('new_text.xlsx')
if __name__ == '__main__':
main()
复制代码
运行效果

通过这篇文章相信大家已经基本掌握了openpyxl模块的使用,通过openpyxl我们可以读取Excel的数据,添加Excel的数据。并且来计算Excel的数据,后续还会更新更多有关于自动化办公的内容,希望通过Python的学习能够让你的办公效率事半功倍

本文介绍如何使用Python的openpyxl模块高效处理Excel表格数据,包括读取、编辑及计算功能,显著提升日常工作流程。
1157

被折叠的 条评论
为什么被折叠?



