openpyxl

安装

pip install openpyxl

使用方式

创建工作表

from openpyxl import Workbook

# 新建工作表
wb = Workbook()
# 选择默认的工作簿
sheet = wb.active
# 给工作簿重命名
sheet.title = '考勤表'

# 指定保存的路径及表名 
wb.save('../考勤表.xlsx')

创建工作簿

语法:打开工作表对象.create_sheet(title='工作簿名字')

import openpyxl 
#读取存在的工作表
wb = openpyxl.load_workbook('有基础资料和库存.xlsx')
#创建新的工作簿
wb.create_sheet(title='工作簿2')
#保存
wb.save('有基础资料和库存.xlsx')

读取

  1. 导包:import openpyxl
  2. 打开Excel文件:wb = openpyxl . load_workbook(excel文件路径)
  3. 打开工作表:
    1. ws = wb[ 表单名 ]
  1. 获取工作表的属性信息(工作表的 所有行数 和 列数):
    1. ws.max_row
    2. ws.max_colomn
  1. 读取工作表的内容:
    1. 读取一行:ws . iter_rows(max_row=1) 默认返回 一行一个元组地址,通过遍历成单元格获取对应的值 :(<Cell 'dl'.A1>, <Cell 'dl'.B1>)

    1. 读取 到所有行 的数据:list ( ws . iter_rows ( ) ) 以行方式获取所有数据地址,存至列表中

    1. 读取一列:ws . iter_cols(max_col=1)

    1. 读取单元格:ws.cell ( 第几行, 第几列 ) .value

ws[单元格].value 如:ws['A1'].value

    1. 读取所有内容:list ( ws.values ) 默认返回一个 (一行一个元组 ) 的存储地址,用 list() 迭代获取值
      1. ws.values 输出结果为generator生成器, 使用list()函数对生成器进行迭代,values后千万不要加 () 号
def read_excel('文件地址', '表单名'):
    # 读取excel到代码中
    workbook = openpyxl.load_workbook('文件地址')
    sh = workbook['表单名']
    # 获取到 所有行 的数据
    res = list(sh.values)
    cases = []
    # 获取 第一行 的数据
    title = [i for i in res[0]]
    # 遍历 第一行之外 的其他行
    for item in res[1:]:
        # 以第一行为键,其它行为值 组成字典
        dic = dict(zip(title, item))
        # 添加到列表中
        cases.append(dic)
        # 返回读取出来的数据,类型是 列表嵌套 字典
    return cases

写入

语法:工作簿对象.append(['数据1','数据2'])

在表的最后一行写入 一行 数据,如果需要 写入多行,就写多条该语句,或利用循环遍历

  1. 新建表来写入
    1. 每次保存的路径和表名 一样保存的数据就会是最新的,旧的数据将 自动删除
  1. 打开已有的表来写入
    1. 打开已有的工作表和工作簿,在表中 写入数据,旧的数据 不会删除
from openpyxl import Workbook

# 新建工作簿
wb = Workbook()
# 选择默认的工作簿
sheet = wb.active
# 给工作簿重命名
sheet.title = '考勤表'

data = [
    ['姓名', '出勤天数', '迟到次数'],
    ['batman', 20, 5],
    ['spiderman', 22, 0]
]

# 写入多行数据
for row in data:
    sheet.append(row)

# 往某个单元格子写入数据
# sheet['A1'] = 'superman'

# 指定保存的路径及表名 
wb.save('../考勤表.xlsx')
import openpyxl

# 打开已有的工作表,在表中 写入数据,以前的数据不变
wb = openpyxl.load_workbook('../考勤表.xlsx')
sheet = wb['考勤表']

data = [
    ['姓名', '出勤天数', '迟到次数'],
    ['batman', 20, 5],
    ['spiderman', 22, 0]
]

# 写入多行数据
for row in data:
    sheet.append(row)

# 往某个单元格子写入和修改数据
# sheet['A1'] = 'superman'

# 指定保存的路径及表名 (也可以是打开表的路径及表名)
wb.save('../考勤表.xlsx')

修改

修改单个单元格内容

import openpyxl

# 打开已有的工作表,在表中 写入数据,以前的数据不变
wb = openpyxl.load_workbook('../考勤表.xlsx')
sheet = wb['考勤表1']

# 往某个单元格子写入和修改数据
sheet['A1'] = 'superman'

# 指定保存的路径及表名 (也可以是打开表的路径及表名)
wb.save('../ds/考勤表.xlsx')

修改所有内容,利用 删除所有行 再 写入新的数据

import openpyxl

# 打开已有的工作表,在表中 写入数据,以前的数据不变
wb = openpyxl.load_workbook('../考勤表.xlsx')
sheet = wb['考勤表1']

data = [
    ['姓名', '出勤天数', '迟到次数'],
    ['batman', 20, 5],
    ['spiderman', 22, 0]
]

# 删除 所有行
sheet.delete_rows(1, sheet.max_row)

# 重新写入 数据
for row in data:
    sheet.append(row)

# 指定保存的路径及表名 (也可以是打开表的路径及表名)
wb.save('../考勤表.xlsx')

删除

从第一行开始 删除

语法:指定工作簿对象.delete_rows(从第几行开始删除, 删除几行) 第一行开始就 设置成 1

# 打开已有的工作表
wb = openpyxl.load_workbook('../考勤表.xlsx')
# 指定工作簿
sheet = wb['考勤表1']

# 删除 所有行 (保留第一行就设置成 2)
sheet.delete_rows(1, sheet.max_row)

# 保存
wb.save('../考勤表.xlsx')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试笔记。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值