Python操作Excel7.20笔记

Python操作Excel

Excel文件后缀名:

  1. xls(旧版,office2003及以前的版本)
  2. xlsx(新版,office2007开始的版本)

更改后缀名的优化:

  1. 旧版本后缀名的excel文件只能保存65536条数据,每条数据最多有256列
  2. 新版后缀名最多能保存1048576行数据,最多有16384列数据
  3. 新版后缀名文件所占内存极大地缩小

openpyxl:读写xlsx文件

注:读写的三个单位分别是

  1. 工作簿(workbook)
  2. 工作表(worksheet)
  3. 单元格(cell)

一、读

导包
import openpyxl
1.打开文件

语法:load_workbook(路径) - 加载本地已存在的xlsx文件,打开一个文件对象

workbook = openpyxl.load_workbook('学生成绩.xlsx')
print(workbook,type(workbook))
2.查看所有工作表(工作簿对象):sheetnames
all_sheet = workbook.sheetnames
print(all_sheet)
3.指定一张工作表
  1. 工作簿.active – 打开文件关闭时显示的工作表
  2. 工作簿[工作表名字] – 打开指定名字的工作表(更好用)
worksheet = workbook['Sheet1']
print(worksheet)
4.读取工作表的数据
  1. 工作表对象[‘列号行号’]
  2. 使用列号行号的数字形式读取表格,工作表对象.cell(行号,列号)
print(worksheet['A1'])
print(worksheet.cell(1, 1))
5.使用value查看单元格内容

语法:单元格.value

print(worksheet['A1'].value)
print(worksheet.cell(1, 1).value)
6.查看最大行数、最大列数
  1. 工作表对象和.max_row – 最大行
  2. 工作表对象和.max_column – 最大列
print(worksheet.max_row)
print(worksheet.max_column)
7.打印整个工作表数据
# 外层循环代表行
for i in range(1,worksheet.max_row + 1):
    for j in range(1,worksheet.max_column + 1):
        # \t使用在print中,能够控制打印结果的长度为2的倍数
        print(worksheet.cell(i, j).value,end='\t')
    print()

二、写

导包
import openpyxl
1.创建xlsx后缀名文件
workbook = openpyxl.Workbook()
2.新建工作表

语法:create_sheet(title,index)

  1. title:工作表名字,index:新建工作表位置
  2. index可以不写,默认追加
workbook.create_sheet('一年级一班')
workbook.create_sheet('一年级二班',1)
3.指定工作表
 # 打印所有工作表名
all_sheet = workbook.sheetnames
print(all_sheet) 
  # 指定
sheet = workbook['一年级一班']
4.向工作表中写内容
sheet['AAA1'].value = '小明'
sheet.cell(1,10).value = '小红'
5.删除工作表

语法:remove(工作表对象)

workbook.remove(workbook['Sheet'])
workbook.remove(workbook['一年级二班'])
6.保存关闭重命名
workbook.save('学生信息.xlsx')
7.练习

题目:将学生成绩表所有学生的平均分算出并写回源文件

import openpyxl

workbook = openpyxl.load_workbook('学生成绩.xlsx')
print(workbook.sheetnames)
sheet = workbook['Sheet1']
# 写入列名
sheet.cell(1,6).value = '平均分'
# 从第二行开始遍历每个学生的信息
rows = sheet.max_row
for i in range(2,rows + 1):
    sum = 0
    for j in range(2,5):
        sum += sheet.cell(i,j).value
    # 将计算出的平均分写回
    # round(数字,小数位数):如果是整数,保持不变
    sheet.cell(i,6).value = round(sum / 3,1)

workbook.save('学生成绩.xlsx')

xlrd(读)、xlwt(写):读写xls文件

一、xlrd(读)

导包
import xlrd
1.打开文件

语法:open_workbook()

wb = xlrd.open_workbook('文件.xls')
print(wb)
2.查看工作表名

语法:sheet_names()

print(wb.sheet_names())
3. 选择工作表
  1. sheet_by_name()
  2. sheet_by_index()
s1 = wb.sheet_by_name('学生')
s2 = wb.sheet_by_index(0)
print(s1,s2)   # 输出结果一致
4. 读取单元格
print(s1.cell(0, 0))
5.使用value获取单元格的内容
print(s1.cell(0, 0).value)
6.查看表格的最大行和最大列数
rows = s1.nrows
cols = s1.ncols
print(rows,cols)
7.读取所有数据
for i in range(rows):
    for j in range(cols):
        print(s1.cell(i, j).value)

二、xlwt(写)

导包
import xlwt
1.创建文件
workbook = xlwt.Workbook()
2.添加工作表

语法:add_sheet(工作表名)

sheet = workbook.add_sheet('学生')
3.向单元格写入数据

语法:工作表.write(行号,列号,内容)

注:xlwt固定行列号从0开始

titles = ['学号','姓名','年龄']
for i in range(len(titles)):
    sheet.write(0,i,titles[i])

info = [
    ['py001','张三',19],
    ['py002','李四',20],
    ['py003','王五','18']
]
for row in range(len(info)):
    for col in range(len(info[row])):
        sheet.write(row + 1,col,info[row][col])
4.保存关闭重命名

注:不能是空xls文件

workbook.save('文件.xls')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值