Python —— 新版openpyxl简记

官方帮助地址
 
 
 
 

使用的基本流程

1、导入openpyxl
2、实例化wb对象
3、实例化sheet对象
4、获取或修改sheetName
5、获取或修改cellValue
6、生成图表
7、保存或另存excel

 
 
 
 

实例化excel表格及sheet对象

workbook对象可以进行遍历,会遍历每个sheet表

在这里插入图片描述

 
 
 
 

读取excel表格

命令:

openpyxl.load_workbook()

返回值:workbook对象

 
示例:
在这里插入图片描述

 
 
 
 

获取当前excel中有哪些sheet及其名字

命令:
注意:wb.get_sheet_names()已经被弃用,尽量避免使用这个方式去获取sheet名

wb.sheetnames --- 属性
wb.get_sheet_names() --- 方法 (已弃用)

返回值:字符串形式的表名

 

示例:
在这里插入图片描述
 
 
 
 

通过sheet名实例化sheet对象

命令:

sheet = wb[sheetName]

返回值:sheet对象

 
示例:
在这里插入图片描述
 
 
 
 

获取当前活动的sheet

命令:

sheetAc = wb.active

返回值:sheet对象

 
示例:
在这里插入图片描述

 
 
 
 
 
 

修改excel表格数据

注意: 如果不是非常确定知道自己在做什么,建议每次修改excel并需要保存修改的时候,使用另存的形式修改, 或者在git跟踪状态下进行修改。

 
 

修改sheet名(可读写属性)

命令:

# 获取sheet名
sheetObject.title
# 修改sheet名
sheetObject.title = "mySheet"

返回值:字符串

 
示例:
在这里插入图片描述

 
 
 
 

从sheet中获取cell对象

注意:sheet中的cellName为"A1"、"B2"之类的,列从A开始,行从1开始而非0
命令:

sheetObject[cellName]

返回值:cell对象

 
示例:
在这里插入图片描述

 
 

修改单元格的值

wb = openpyxl.workbook()
sht = wb.active
# 方法一
sht["A1"] = 1
# 方法二
sht.cell(1, 1).value = 1

 
 

获取单元格的值 (可读写属性)

命令:

cellObject.value
或
sheetObject.cell(row=rowNum, culumn=colNum)

返回值:单元格中的值

 
示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
 
 

获取单元格的坐标

命令:

# 获取行号
cellObject.row
# 获取列号(以数字1、2、3形式而非A、B、C)
cellObject.column
# 获取cell的坐标名
cellObject.coordinate

返回值:略

 
示例:
在这里插入图片描述

 
 
 
 

获取最大、最小行列数

命令:

sheetAc.max_column
sheetAc.max_row
sheetAc.min_column
sheetAc.min_column

返回值:数值

 
示例:

在这里插入图片描述

 
 
 
 

对表进行切片

命令:

# 切片的结果包含A1-B3的所有单元格
sheetAc["A1":"B3"]

返回值:tuple

 
示例:

在这里插入图片描述

 
 
 
 

遍历所有的行列

命令:

sheetObject.columns
sheetObject.rows

返回值:

 
示例:

在这里插入图片描述
在这里插入图片描述

 
 
 
 
 
 

保存excel数据

命令:

wb.save()

 
 
 
 
 
 

创建和删除工作表

 
 

创建excel表

命令:

wb = openpyxl.Workbook()

示例:
在这里插入图片描述
 
 
 
 

创建sheet表

命令:

wb.create_sheet(index=1, title='test')

示例:
在这里插入图片描述
在这里插入图片描述

 
 
 
 

删除sheet表

命令:

wb.remove(sheetObject)

示例:
在这里插入图片描述
 
 
 
 
 
 

修改单元格字体

流程:
1、实例化font对象(openpyxl.styles.Font(para))
para:

  • name —— 字体名称(str——Calibri、Times New Roman)
  • size —— 字体大小(int)
  • bold —— 字体粗体(boolean)
  • italic —— 字体斜体(boolean)
  • color —— 字体颜色(如"ff0000")

命令:

fontObject= 	openpyxl.styles.Font()	
cellObject.font = fontObject

示例:

import openpyxl

# 数据路径
xlsx = r"C:\Users\dell\Desktop\temp1.xlsx"

wb = openpyxl.load_workbook(xlsx)
sht = wb.active

font = openpyxl.styles.Font(name="Time New Romans", bold=True, italic=True)

for eachCol in sht.columns:
    for eachCell in eachCol:
        eachCell.font = font

wb.save("D:/q.xlsx")

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 
 
 
 
 
 

添加公式

将单元格的值改为具体的公式即可。如:

sht["F16"] = "=SUM(F2:F15)"

注意在读取excel的时候,若单元格为公式则默认读取公式,若要读取结果那么设置如下即可openpyxl.load_workbook(data_only=True)

在这里插入图片描述

 
 
 
 
 
 

设置行高、列宽

命令:

# 设置行高、列宽
sht.row_dimensions[1].height = 30
sht.column_dimensions["B"].width = 20

在这里插入图片描述

 
 
 
 
 
 

应用实例

 
 

基础数据

在这里插入图片描述
 
 
 
 

 
 

实例1、给表中所有SALES部门的人涨薪 500

代码:

# 给所有销售人员涨薪500
import openpyxl
# 数据路径
xlsx = r"C:\Users\dell\Desktop\temp1.xlsx"

# 读取excel表格
wb = openpyxl.load_workbook(xlsx)

# 读取sheet
sht = wb.active

dnameCellRow = None
dnameCellColumn = None
for col in range(sht.max_column):
    # 假定不知道DNAME在哪一列
    col += 1
    cell = sht.cell(row=1, column=col)
    if str(cell.value).upper() == "DNAME":
        dnameCellRow = cell.row
        dnameCellColumn = cell.column

# 获取薪水所在的位置
salCellRow = None
salCellColumn = None
for col in range(sht.max_column):
    # 假定不知道DNAME在哪一列
    col += 1
    cell = sht.cell(row=1, column=col)
    if str(cell.value).upper() == "SAL":
        salCellRow = cell.row
        salCellColumn = cell.column


# 存在DNAME列
if dnameCellColumn and dnameCellRow:
    for row in range(sht.max_row):
        row += 2
        if str(sht.cell(row=row, column=dnameCellColumn).value).upper() == "SALES":
            sht.cell(row=row, column=salCellColumn).value += 500
#             print(sht.cell(row=row, column=salCellColumn))

wb.save(r"C:\Users\dell\Desktop\temp1_copy.xlsx")

print(dnameCellRow, dnameCellColumn)

结果:
1、原始数据:
在这里插入图片描述
2、结果数据
在这里插入图片描述

demo:

 
 
 
 

命令:

返回值:

 
示例:

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值