python openpyxl读写xlsx_python高阶教程-python操作xlsx文件(openpyxl)

本篇内容来自原创小册子《python高阶教程》,点击查看目录。

背景

在处理一些作业时,经常会碰到统计未交人数、分数等需求,虽然我们在数据库中有了对应的数据,

但是数据库只是面向开发者的,仍然需要将其转换为专业的可阅读格式-excel表格。

目前常用的操作xlsx表格的是openpyxl, 官网地址

编程模型

读取from openpyxl import Workbook

from openpyxl.utils import get_column_letter

# 在内存中创建一个workbook对象,而且会至少创建一个 worksheet

wb = Workbook()

#获取当前活跃的worksheet,默认就是第一个worksheet

ws = wb.active

#设置单元格的值,A1等于6(测试可知openpyxl的行和列编号从1开始计算),B1等于7

ws.cell(row=1, column=1).value = 6

ws.cell("B1").value = 7

#从第2行开始,写入9行10列数据,值为对应的列序号A、B、C、D...

for row in range(2,11):

for col in range (1,11):

ws.cell(row=row, column=col).value = get_column_letter(col)

#可以使用append插入一行数据

ws.append(["我","你","她"])

#保存

wb.save(filename="/Users/budong/Desktop/a.xlsx")

写入from openpyxl import load_workbook

#打开一个workbook

wb = load_workbook(filename="/Users/budong/Desktop/a.xlsx")

#获取当前活跃的worksheet,默认就是第一个worksheet

#ws = wb.active

#当然也可以使用下面的方法

#获取所有表格(worksheet)的名字

sheets = wb.get_sheet_names()

#第一个表格的名称

sheet_first = sheets[0]

#获取特定的worksheet

ws = wb.get_sheet_by_name(sheet_first)

#获取表格所有行和列,两者都是可迭代的

rows = ws.rows

columns = ws.columns

#迭代所有的行

for row in rows:

line = [col.value for col in row]

print(line)

#通过坐标读取值

print(ws.cell('A1').value) # A表示列,1表示行

print(ws.cell(row=1, column=1).value)

处理包含学生学号和学生姓名的表格

在该例子中,xlsx表格中只有两列,第一列是学生学号,第二列是学生姓名,

使用get_stu可以获取xlsx文件中的学号与姓名供使用,使用write_xlsx

可以向xlsx文件中写入数据,其中data为二维列表。from openpyxl import Workbook, load_workbook

src_name = 'students.xlsx'

def get_stu(file_name, type='code'):

wb = load_workbook(file_name)

ws = wb.active

stu_code = []

rows = ws.rows

for row in rows:

if type=='code':

# stu code

col = row[1]

elif type=='name':

col = row[2]

else:

col = row[1]

stu_code.append(str(col.value))

return stu_code

def write_xlsx(file_name, data):

wb = Workbook()

ws = wb.active

for row in range(1,len(data) + 1):

for column in range(1, len(data[row-1]) + 1):

ws.cell(row=row, column=column).value = data[row-1][column-1]

wb.save(filename=file_name)

参考:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值