一、python能够操作Excel模块
excel 文件后缀名xls xlsx
xls:office 2003及以前
xlsx:office 2007及以后
新版office向前兼容
xlsx文件比xls文件体积缩小(保存同样的数据)
xlsx文件存储的数据量大于旧版xls文件
xls文件最多存储256列、2^16行数据
xlsx文件最多1048576行,16384列
from openpyxl import Workbook,load_workbook
Workbook:当文件不存在时,使用Workbook创建
使用Workbook创建的文件我们看不到,但是系统知道,如果想让文件出现,必须保存
当文件经存在,使用load_workbook加载
from openpyxl import Workbook,load_workbook
wb=Workbook()
Excel写操作
创建工作表:create_sheet(表名,下标)
wb.create_sheet(‘一年级一班’)
下标:代表新建的工作表的位置,不写代表末尾追加
wb.create_sheet(‘一年级一班’,0)
sheet1.title='一年级二班'
查看已经存在的表名 wb.sheetnames
sheetlist=wb.sheetnames
print(sheetlist) #['一年级一班1', 'Sheet', '一年级一班']
指定工作簿中的工作表 wb.active
#指定打开(关闭文件时显示在上层的工作表)工作表
sheet1=wb.active
print(sheet1)
#修改表名
sheet1.title='一年级二班'
# 指定打开已经存在的工作表 wb['表名']
sheet2=wb['一年级一班']
print(sheet2)
向指定单元格写入内容,查看某个单元格内容
工作表[列号行号] #列号表示大写英文字母
工作表.cell(行号,列号) #列号表示从1递增数字
value查看单元格值,往单元格写入内容
print(sheet1.cell(1, 1).value) #sheet1表 None
sheet1.cell(1, 1).value='姓名' #sheet1表 姓名
sheet1.cell(1, 2).value='语文' #sheet1表 姓名
print(sheet1.cell(1, 1).value)
第二种
print(sheet2['A1'].value) #None
sheet1['C1'].value='数学' #c1单元格为数学
print(sheet1['C1'].value)
删除已经存在的表
wb.remove_sheet()#表对象
wb.remove_sheet(wb['Sheet'])
保存
wb.save('学生成绩.xlsx')
print('完成')
二、生成学生成绩表
from openpyxl import load_workbook #引入openpyxl模块
from random import randint #后续会引入random模块
- 加载已经存在的文件
wb=load_workbook('学生成绩.xlsx')
- 查看已经存在的所有工作表
all_sheet=wb.sheetnames
- 指定一张工作表
sheet=wb['一年级一班']
- 学生成绩表生成规则
姓名、语文、数学、英语 4列
100名学生,姓名列填入python001 - python100
成绩三列从[0-100]中随机生成填入
#将第一行4列的数据填入1行各4列中
column=['姓名','语文','数学','英语']
for i in range(len(column)):
sheet.cell(1,i+1).value=column[i]
for i in range(1,101): #写姓名
name1=f'python{i:0>3}'
sheet.cell(i+1,1).value=name1
#写每个学生的三科成绩
for j in range(2,5):
sheet.cell(i+1,j).value=randint(0,100) #成绩从[0-100]中随机生成填入
#保存
wb.save('学生成绩表.xlsx')
print('完成')
三、读学生成绩表
from openpyxl import load_workbook
wb=load_workbook('学生成绩表.xlsx') #加载需要的表
all_sheet=wb.sheetnames #查看所有的工作表
sheet=wb['一年级一班'] #指定一个工作表
rows=sheet.max_row
cols=sheet.max_column
print(rows,cols) #查看这个表的最大行和最大列
for i in range(1,rows+1):
for j in range(1,cols+1):
print(sheet.cell(i,j).value)
四、相对路径和绝对路径
绝对路径
C:\文件夹\文件夹\文件夹…\文件
相对路径
语法:
. 表示 当前文件夹,可以省略不写
… 表示当前文件夹的上一级
文件夹和文件夹之间或者和文件之间使用 / 斜杠分隔
问题:
假设目前处于文件夹B中,寻找文件A,绝对路径和相对路径分别怎么写?
绝对路径:始终是以根目录盘符为参照物
C:\文件夹A\文件夹C\文件A
相对路径:以当前文件夹为参照物
…/文件夹A/文件夹C/文件A
练习
将成都二手房这个工作簿里面的几个工作表数据,汇总到一个新的工作表中。
from openpyxl import load_workbook
wb = load_workbook('成都二手房.xlsx')
all_sheet = wb.sheetnames
if '汇总' not in all_sheet:
wb.create_sheet('汇总')
all_sheet = wb.sheetnames
hs=2
for i in range(1, wb[all_sheet[0]].max_column + 1):
wb['汇总'].cell(1, i).value = wb[all_sheet[0]].cell(1, i).value
for x in all_sheet[:-1]:
sheet=wb[x]
for j in range(2, sheet.max_row + 1):
for i in range(1,sheet.max_column + 1):
wb['汇总'].cell(hs, i).value = sheet.cell(j, i).value
hs+=1
wb.save('成都二手房.xlsx')
print('完成')
openpysl xlrd xlwt pandas xlutils xlsxwriter
openpysl只能操作xlsx后缀名的Excel文件
xlrd(只能读) 、xlwt(只能写)只能操作xls后缀名的Excel文件
五、自动化办公
概念
三、openpyxl模块操作xlsx
手动创建Excel工作表
- 引入模块
from openpyxl import load_workbook
1.** 加载已经存在的文件**
wb=load_workbook(‘学生成绩.xlsx’)
2.** 查看已经存在的工作表**
sheetlist=wb.
xlutils xlsxwriter
openpysl只能操作xlsx后缀名的Excel文件
xlrd(只能读) 、xlwt(只能写)只能操作xls后缀名的Excel文件
二、自动化办公概念
概念(略)
三、openpyxl模块操作xlsx
手动创建Excel工作表
- 引入模块
from openpyxl import load_workbook
- 加载已经存在的文件
wb=load_workbook(‘学生成绩.xlsx’)
- 查看已经存在的工作表
sheetlist=wb.