openpyxl操作execl表格数据

  • 只能打开xlsx类型的excel文件
    默认可读写,若有需要可以指定write_onlyread_only为True
wb = openpyxl.load_workbook(filename)

返回一个workbook对象,用于对excel的读取和写入

  • 获取工作表的sheet列表
# 返回文件的所有sheet名
wb.sheetnames
['Sheet1', 'Sheet2', 'Sheet3']
  • 获取工作sheet
sheet = wb[wb.sheetnames[0]]
  • 添加sheet
wb.create_sheet('Data', index=1) # 名字 Data,位置为索引1的位置
  • 读写单元格数据
sheet['A1'] = 'test'
sheet['B9'] = '=AVERAGE(B2:B8)'
sheet['A1'].value  #test
cell = sheet['B4']
cell.row # 4 单元格行号
cell.column # 2 单元格列号
cell.column_letter # B 单元格列号 用字母表示

但是如果是读取的时候需要加上data_only=True这样读到B9返回的就是数字,如果不加这个参数,返回的将是公式本身’=AVERAGE(B2:B8)’

  • 添加行数据 append
    可以一次添加多行数据,从第一行空白行开始(下面都是空白行)写入
# 添加一行
row = [1 ,2, 3, 4, 5]
sheet.append(row)

# 添加多行
rows = [
    ['Number', 'data1', 'data2'],
    [2, 40, 30],
    [3, 40, 25],
    [4, 50, 30],
    [5, 30, 10],
    [6, 25, 5],
    [7, 50, 10],
]
for row in rows:
    sheet.append(row)
由于append函数只能按行写入。如果我们想按列写入呢。append能实现需求么?如果把上面的列表嵌套看作矩阵。只要将矩阵转置就可以了。
rows_zip = list(zip(*rows))
for row in rows_zip:
	sheet.append(row)
  • 删除整行整列
sheet.delete_rows(6) # 整行
sheet.delete_cols(6) # 整列
  • 保存文件
wb.save(r'D:\example.xlsx')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值