day08xlrd和xlwt操作excel

day8xlrd和xlwt操作excel

01xlrd获取文件内容

import xlrd

1.打开excel文件

wb = xlrd.open_workbook('files/data1.xls')

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

工作簿.sheet_names()

names = wb.sheet_names()
print(names)

3.获取工作表

1)获取所有的工作表:工作簿.sheets()

all_sheet = wb.sheets()
print(all_sheet)

2)获取一个工作表:

工作表.sheet_by_name(表名)

stu_sheet = wb.sheet_by_name('students')
print(stu_sheet)

工作表.sheet_by_index(下标)

tea_sheet = wb.sheet_by_index(1)
print(tea_sheet)

4.获取最大行数和最大列数

工作表.nrows

工作表.ncows

m_r = stu_sheet.nrows
m_c = stu_sheet.ncols
print(m_r,m_c)

5.按行或者按列获取数据

1)按行获取数据

工作表.row_values(行下标) - 获取指定行对应的所有数据(行下标是从0开始的)

result = stu_sheet.row_values(3)
print(result)       # ['小花', '女', 22.0, 95.0]

工作表.row_values(行下标,起始列下标) - 获取指定行中指定列开始所有的数据

工作表.row_values(行下标,起始列下标,终止列下标) - 获取指定行中指定范围的所有数据(终止列下标对应的数据取不到)

result = stu_sheet.row_values(2,1,3)
print(result)   # ['男', 25.0]

2)按列获取数据

工作表.col_values(列下标)

工作表.col_values(列下标,起始行下表)

工作表.col_values(列下标,起始行下标,终止行下标)

result = stu_sheet.col_values(0)
print(result)

result = stu_sheet.col_values(3,1)
print(result)

练习1:一行一行的获取整个学生表中所有的数据

for x in range(m_r):
    result = stu_sheet.row_values(x)
    print(result)

练习2:一列一列的获取所有学生的信息

for x in range(m_c):
    result = stu_sheet.col_values(x)
    print(result)

6.获取单元格

1)工作表.cell(行下标,列下标) - 获取指定位置对应的单元格对象

print(stu_sheet.cell(1,0))
print(stu_sheet.cell(1,2).value)

3)工作表.row(行下标) - 获取指定行中所有的单元格

result = stu_sheet.row(0)
print(result)

4)工作表.col(列下标) - 获取指定列中所有的单元格

result = stu_sheet.col(0)
print(result)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v107qCNB-1676525887163)(C:\Users\44913\AppData\Roaming\Typora\typora-user-images\image-20230216115255403.png)]

02xlwt对excel文件进行写操作

import xlwt
1.创建excel文件(创建工作簿)
注意:创建工作簿的时候不会自动创建工作表
wb = xlwt.Workbook()
2.添加工作表
1)工作簿.add_sheet(表名)   -   在工作簿中添加指定名字对应的工作表,这个表中的单元格不能重写
2)工作簿.add_sheet(表名,cell_overwrite_ok=True)   -   在工作簿中添加指定名字对应的工作表,这个表中的单元格可以重写
sheet1 = wb.add_sheet('数据1')
sheet2 = wb.add_sheet('数据2',cell_overwrite_ok=True)
3.写入数据
工作表.write(行下标,列下标,数据) -   将数据写入到指定工作表中指定位置
sheet1.write(0,0,'名字')
sheet1.write(1,2,'hello')
sheet2.write(0,0,'名字')
sheet2.write(1,2,'hello')
sheet2.write(0,0,'name')
sheet2.write(1,2,None)
wb.save('files/example1.xls')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aMuCXC68-1676525887166)(C:\Users\44913\AppData\Roaming\Typora\typora-user-images\image-20230216115216058.png)]

03xlwt修改excel文件单元格式

import xlwt

wb = xlwt.Workbook()
sheet = wb.add_sheet('样式')

1.创建样式对象

style1 = xlwt.XFStyle()

2.添加字体样式

font1 = xlwt.Font()
font1.name = '黑体'
font1.bold = True
font1.height = 20*20
font1.colour_index = 12
style1.font = font1

3.添加边框样式

b1 = xlwt.Borders()
b1.bottom = 10
b1.bottom_colour = 13
style1.borders = b1

4.添加对齐样式

style2 = xlwt.XFStyle()
al1 = xlwt.Alignment()
al1.vert = xlwt.Alignment.VERT_CENTER
al1.vert = xlwt.Alignment.HORZ_CENTER
al1.rota = 45
style2.alignment = al1

5.添加填充样式

p1 = xlwt.Pattern()
p1.pattern = xlwt.Pattern.SOLID_PATTERN
p1.pattern_fore_colour = 13
style1.pattern = p1

sheet.write(0,0,'名字',style=style1)
sheet.write(2,3,'对齐格式',style=style2)

6.合并单元格

工作表.write_merge(行下标1,行下标2,列下标1,列下标2,数据,样式)

sheet.write_merge(8,8,2,6,'hello',style1)
sheet.write_merge(12,22,2,7,'hello',style2)

7.设置列的宽度和行的高度

1)设置列的宽度

sheet.col(0).width = 30*256

2)设置行的高度

允许指定的行可以设置高度

sheet.row(0).height_mismatch = True

设置行的高度

sheet.row(0).height = 30*60
wb.save('files/example2.xls')
print(xlwt.Style.colour_map)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-awU7W4Qh-1676525887167)(C:\Users\44913\AppData\Roaming\Typora\typora-user-images\image-20230216125148508.png)]

04xlutils的用法

import xlutils,xlwt,xlrd
from xlutils.copy import copy

1.使用xlrd打开已经存在的工作簿对象(得到一个只读的工作簿)

wb = xlrd.open_workbook('files/data1.xls')

2.将只读的工作簿转换成可写的工作簿

wb1 = copy(wb)

sheet1 = wb1.add_sheet('data')

wb1.save('files/data1.xls')

lutils的用法

import xlutils,xlwt,xlrd
from xlutils.copy import copy

1.使用xlrd打开已经存在的工作簿对象(得到一个只读的工作簿)

wb = xlrd.open_workbook('files/data1.xls')

2.将只读的工作簿转换成可写的工作簿

wb1 = copy(wb)

sheet1 = wb1.add_sheet('data')

wb1.save('files/data1.xls')

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值