栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python操作Excel7.20笔记

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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')
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号