Day20-表格文件操作(总结)

Day20-表格文件操作

姚万里

1.Excel文件读操作

注意:openpyxl只能处理格式是.xlsx的excel文件

import openpyxl
  1. excel相关的专业术语

工作簿 - 一个excel文件就是一个工作簿

工作表(表) - 一个工作簿中可以有多张表(至少一张表)

单元格 - 保存数据的每个格子

2.2. excel文件读操作

1)加载excel文件获得工作簿对象

openpyxl.load_workbook(文件路径)

wb = openpyxl.load_workbook(‘files/data.xlsx’)

2)获取所有工作表的表名

工作簿对象.sheetnames

names = wb.sheetnames
print(names) # [‘学生成绩’, ‘讲师信息’, ‘Sheet2’, ‘Sheet3’]

3)获取工作表

a. 工作簿对象.active - 获取活跃表(被打开的表)

b. wb[表名] - 获取指定的工作表

sheet1 = wb.active
print(sheet1)

sheet2 = wb[‘学生成绩’]
print(sheet2)

4)获取单元格

a. 表对象.cell(行号, 列号) - 获取指定单元格, 行号和列号都是从1开始的数字

b. 表对象[‘列号行号’] - 获取指定单元格, 列号用大写字母(不常用)

cell1 = sheet1.cell(1, 1)
print(cell1)

cell2 = sheet1[‘D3’]
print(cell2)

5)获取单元格内容

单元格对象.value

print(cell1.value)
print(cell2.value)

6)获取一个表最大行数和最大列数

表对象.max_row - 最大行数

表对象.max_column - 最大列数

max_row = sheet1.max_row
max_column = sheet1.max_column

练习: 写代码获取阿里巴巴2020年股票数据.xlsx文件中所有的数据

2.练习

import openpyxl

wb = openpyxl.load_workbook('files/阿里巴巴2020年股票数据.xlsx')
sheet = wb.active
# 获取最大行数和列数
max_r = sheet.max_row
max_c = sheet.max_column

# 获取表中所有的数据
# for row in range(1, max_r+1):
#     for col in range(1, max_c+1):
#         print(sheet.cell(row, col).value, end=' ')
#     print()


# 获取第一列所有的数据
for row in range(2, max_r+1):
    print(sheet.cell(row, 1).value)

3.excel文件写操作

import openpyxl
import os

1.获取工作簿

  1. 获取已经存在的excel文件对应的工作簿:openpyxl.load_workbook(路径)

  2. 新建一个工作簿(默认有一张表): openpyxl.Workbook()

如果文件已经存在就打开,不存在才创建

if os.path.exists('files/newData.xlsx'):
    wb = openpyxl.load_workbook('files/newData.xlsx')
else:
    wb = openpyxl.Workbook()
    print(wb.sheetnames)

2.添加表

工作簿对象.create_sheet(表名, 下标) - 在指定位置创建指定表,并且返回创建的表对象

sheet1 = wb.create_sheet(‘商品表’)

sheet2 = wb.create_sheet(‘房产信息’, 0)

3.删除表

工作簿对象.remove(表对象)

wb.remove(wb[‘Sheet’])

4.插入数据

单元格对象.value = 数据

wb[‘商品表’].cell(1, 1).value = ‘商品名称’

-1.保存文件

wb.save(‘files/newData.xlsx’)

4.练习

练习:将students中的学生信息插入到'学生信息'表中,字典的键作为表头
students = [
    {'stuid': 'stu001', 'name': '小明', 'age': 20, 'score': 90},
    {'stuid': 'stu002', 'name': 'stu2', 'age': 19, 'score': 89},
    {'stuid': 'stu003', 'name': '张三', 'age': 25, 'score': 78},
    {'stuid': 'stu004', 'name': 'lisi', 'age': 30, 'score': 99}
]


import openpyxl
import os

if os.path.exists('files/学校.xlsx'):
    wb = openpyxl.load_workbook('files/学校.xlsx')
else:
    wb = openpyxl.Workbook()

if '学生信息' not in wb.sheetnames:
    sheet = wb.create_sheet('学生信息')
else:
    sheet = wb['学生信息']

# 写第1行
keys = list(students[0])
length = len(keys)
for col in range(1, length+1):
    sheet.cell(1, col).value = keys[col-1]

# 写学生信息
row = 2
for stu in students:
    for col in range(1, length+1):
        sheet.cell(row, col).value = stu[keys[col-1]]
    row += 1


wb.save('files/学校.xlsx')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值