day8 Python:xlrd、xlwt、xlutils操作Excel

文章介绍了Python中xlrd库用于读取Excel文件,包括打开文件、获取工作表、读取数据和单元格等操作。xlwt库则用于创建和写入Excel文件,包括添加工作表、设置单元格样式和合并单元格等功能。xlutils库用于在xlrd打开的只读工作簿和可写工作簿之间转换,实现对已有Excel文件的写操作。
摘要由CSDN通过智能技术生成

day8 Python:xlrd、xlwt、xlutils操作Excel

一、xlrd

1. 打开Excel文件

workbook_1 = xlrd.open_workbook("files/data1.xls")

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

names = workbook_1.sheet_names()

3. 获取工作表

  • 获取所有的工作表:workbook.sheets()

all_sheet = workbook_1.sheets()
  • 获取某一张表

  1. workbook.sheet_by_name(sheet_name)

student_sheet = workbook_1.sheet_by_name("students")
  1. workbook.sheet_by_index(sheet_index)

teacher_sheet = workbook_1.sheet_by_index(1)

4. 获取最大行和最大列

stu_max_row = student_sheet.nrows   # 行数
stu_max_column = student_sheet.ncols    # 列数

5. 获取数据

# student_sheet.row_values(行下标,开始列,终点列) # 下标从0开始,开始与结束左闭右开
result_1 = student_sheet.row_values(3)

result_3 = student_sheet.col_values(1)
result_4 = student_sheet.col_values(1, 2, 4)
# 练习1:一行一行的获取整个学生表中所有的数据
for i in range(stu_max_row):
    data_student = student_sheet.row_values(i)
    print(data_student)
print("--------------------分割------------------")

# 练习2:一列一列的获取所有学生的信息
for i in range(stu_max_column):
    data_student = student_sheet.col_values(i, 1)
    print(data_student)
print("--------------------分割------------------")

6. 获取单元格

# 6.获取单元格
# 1)student_sheet.cell(row_index, column_index).value
print(student_sheet.cell(1, 0)) # 单元格对象
print(student_sheet.cell(1, 0).value)   # 具体值

# 2)student_sheet.row(row_index)    # 注意这里返回的是一个列表
result_5 = student_sheet.row(0)
print(result_5)

# 3)student_sheet.col(column_index)    # 注意这里返回的是一个列表
result_6 = student_sheet.col(0)
print(result_6)

二、xlwt

1. 创建Excel文件

workbook_1 = xlwt.Workbook()

需要注意的是创建工作簿的时候不会自动创建工作表

2. 添加表

# add_sheet(sheet_name, cell_overwrite = True/False)
# 单元格数据无法重写,写过不可以修改
sheet_1 = workbook_1.add_sheet("data_1")

# 单元格数据可用重写,可用实现覆盖操作
sheet_2 = workbook_1.add_sheet("data_2", cell_overwrite_ok=True)

3. 写入数据

# sheet.write(row_index, column_index, data)
sheet_1.write(0, 0, "名字")
# sheet_1.write(0, 0, "性别")   # 报错

sheet_2.write(0, 0, "名字")
sheet_2.write(0, 0, "性别")

4. 设置单元格样式

# 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 = 16
style1.borders = b1

# 4.添加对齐样式
style2 = xlwt.XFStyle()
al1 = xlwt.Alignment()
al1.vert = xlwt.Alignment.VERT_CENTER
al1.horz = xlwt.Alignment.HORZ_CENTER
style2.alignment = al1

# 5.添加填充样式
p1 = xlwt.Pattern()
p1.pattern = xlwt.Pattern.SOLID_PATTERN
p1.pattern_fore_colour = 26
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)
{'aqua': 49, 'black': 8, 'blue': 12, 'blue_gray': 54, 'blue_grey': 54, 'bright_green': 11, 'brown': 60, 'coral': 29, 'cyan_ega': 15, 'dark_blue': 18, 'dark_blue_ega': 18, 'dark_green': 58, 'dark_green_ega': 17, 'dark_purple': 28, 'dark_red': 16, 'dark_red_ega': 16, 'dark_teal': 56, 'dark_yellow': 19, 'gold': 51, 'gray_ega': 23, 'grey_ega': 23, 'gray25': 22, 'grey25': 22, 'gray40': 55, 'grey40': 55, 'gray50': 23, 'grey50': 23, 'gray80': 63, 'grey80': 63, 'green': 17, 'ice_blue': 31, 'indigo': 62, 'ivory': 26, 'lavender': 46, 'light_blue': 48, 'light_green': 42, 'light_orange': 52, 'light_turquoise': 41, 'light_yellow': 43, 'lime': 50, 'magenta_ega': 14, 'ocean_blue': 30, 'olive_ega': 19, 'olive_green': 59, 'orange': 53, 'pale_blue': 44, 'periwinkle': 24, 'pink': 14, 'plum': 61, 'purple_ega': 20, 'red': 10, 'rose': 45, 'sea_green': 57, 'silver_ega': 22, 'sky_blue': 40, 'tan': 47, 'teal': 21, 'teal_ega': 21, 'turquoise': 15, 'violet': 20, 'white': 9, 'yellow': 13}

三、xlutils

读者需要注意的是xlrd只能读取表格数据,并不能重写数据,然而xlwt可以进行写数据,但是不能对使用xlrd打开的表格进行写,这是由于xlrd打开的数据只读,并不能进行写操作,因此需要xlutils进行中间转换

"""
Author: TianGuoHui
Create Time: 2023/2/15 16:57
"""
# xlrd只能对Excel文件进行读操作,而且只能用通过xlrd打开的Excel文件(xlrd无法直接操作xlwt创建的工作簿)
# xlwt只能创建新的Excel,无法获取已经存在的Excel文件
# 结论:xlutils只能让已经存在的Excel可以添加新的表的写操作,不能直接修改表中的数据。

import xlwt, xlrd
from xlutils.copy import copy

# 1.使用xlrd打开已经存在的工作簿对象(得到一个只读的工作簿)
wb = xlrd.open_workbook('files/data1.xls')
sheet0 = wb.sheet_by_index(0)

# 2.将只读的工作簿转换成可写的工作簿
wb1 = copy(wb)

sheet1 = wb1.add_sheet('data2')
sheet1.write(0, 0, '姓名')

# sheet0.write(0, 0, 'name')

wb1.save('files/data1.xls')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值